yinxing.!!-不断学习...

老老实实做人,认认真真做事..走自己的路,让别人打的去吧.~

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  5 Posts :: 5 Stories :: 2 Comments :: 0 Trackbacks

2006年12月13日 #

在使用ASP.NET开发应用程序时需要注意的10个技巧,这些技巧涉及从缺省的控件、表单名的改变到StringBuilder类的使用,有助于编程人员能够尽快地适应.NET环境。 1、在使用Visual Studio .NET时,除直接或非引用的对象外,不要使用缺省的名字。
.NET带来的好处之一是所有的源代码和配置文件都是纯文本文件,能够使用Notepad或WordPad等任意的文本编辑器进行编辑。如果不愿意,我们并非一定要使用Visual Studio .NET作为集成开发环境。但使用了Visual Studio .NET,我们可以在Windows文件管理器中看到文件,或在Visual Studio .NET之外从文本编辑器中浏览文件的内容。
使用Visual Studio .NET作为集成开发环境有许多好处,其中最显著的好处是它极大地提高了生产效率。使用Visual Studio. NET,我们能够在付出较小代价的情况下更快地开发软件。作为集成开发环境一部分的IntelliSense提供自动的代码完成、在输入方法或函数时提供动态帮助、语法错误的实时提示,以及其他能够提高生产效率的功能。
象其他复杂的工具那样,在学会如何充分发挥它的作用和掌握其“习性”前,Visual Studio .NET也会使我们产生一种挫折感。有时,它象一个难以了解的黑盒子,会生成大量的文件和许多无用的代码。
Visual Studio .NET的一个功能是,无论是类、控件或表单中的对象,它都能够为新对象提供缺省名字。例如,如果我们创建了一个新的ASP.NET Web Application,其缺省的名字将是WebApplication1。我们可以在“新工程”对话框中方便地改变该应用的名字,但同时改变的只是该应用程序的名字空间的名字及其所在的虚拟目录,源代码文件的缺省名字仍然是WebForm1.aspx和WebForm1.aspx.cs(C#工程)或WebForm1.aspx.vb(VB.NET工程)。

我们可以在方案浏览器中改变ASPX和代码使用的文件名字,但Web页类的名字仍然将是WebForm1。如果在该Web表单上生成一个按钮,其缺省的名字将是Button1。事实上,所有控件的名字都是由控件的类型和数字组成的。
我们能够,也应该将应用程序中所有的表单和控件的名字都修改成有意义的名字。对于较小的演示性程序而言,缺省的名字还能够胜任,但如果应用程序由多个表单,每个表单上有许多按钮和标签时,象frmStartup、frmDataEntry和frmReports这样的表单名就比Form1、Form2和Form3这样的名字更易于理解和维护。
如果表单上控件要在代码的其他地方引用,使它有一个有意义的名字就更重要了。btnOK、btnCancel和btnPrint这样的名字使看代码的人更容易理解,因而,也比名字为Button1、Button2、Button3这样的控件更容易维护。
修改一个工程中所有文件中出现的一个名字的一个好方法是,在Visual Studio .NET菜单中依次选择“编辑”->“发现和替换”->“替换”命令。
在看二周前编写的代码时,我们经常就象第一次见到这些代码一样,因此使它们有一个有助于我们理解其含义的名字是十分有必要的。


2、即使不使用Visual Studio .NET进行编程,使用代码支持文件也有利于提高应用程序的性能
在Web应用程序、Web服务或Web控件等所有的ASP.NET Web工程中,Visual Studio .NET都使用代码支持文件。代码支持文件使工程具有更好的组织、模块性,更适合多人组成的开发团队。另外,它还会带来性能的提高。
代码支持文件的内容被编译成一个组合文件中的类,一般是一个DLL文件,有时也可以是EXE文件。该文件驻留在应用程序的组合体高速缓冲区中,在应用程序启动时,可以立即得到它。
如果代码是包含在<script>标记中或ASPX文件代码中,它仍然会被编译成一个Web页类。在这种情况下,每当该网页在应用程序对话中第一次加载时,都需要重新进行编译,被编译的类就会驻留在内存中。每当计算机启动、IIS停止、重新启动或者源代码、配置文件改变时,该文件必须重新编译。尽管不大,但这样引起的性能损耗也是相当可观的。


3、尽量减少表单回送
每当点击Web网页上的Button、LinkButton或ImageButton控件时,表单就会被发送到服务器上。如果控件的AutoPostBack属性被设置为true,如果CheckBox、CheckBoxList等控件的状态被改变后,也会使表单会发送回服务器。
每次当表单被发送回服务器,就会被重新加载,启动Page_Load事件,执行Page_Load事件处理程序中的所有代码。把网页的初始化代码放在这里是最合适不过的了。我们经常会希望在每次加载网页时执行一些代码,而希望只有在网页第一次加载时执行另一些代码,甚至希望一些代码在除首次加载外的每次加载时执行。
可以利用IsPostBack特性来完成这一功能。在网页第一次加载时,该属性的值是false。如果网页因回送而被重新加载,IsPostBack属性的值就会被设置为true。通过测试,可以在任意时候执行指定的代码。下面是相关的C#代码:
protected void Page_Load(Object sender, EventArgs e)
{
// 网页每次加载时,执行的一些操作
if (!IsPostBack)
{
// 网页第一次加载时执行的操作
}
else
{
// 回送时执行的操作
}

// 网页每次加载时执行的操作
}
我们希望尽量不引起回送(每次回送都会要求服务器进行一系列的操作),即使引起回送后。也希望能够执行尽量少的操作。大规模、浪费时间的操作(例如数据库查找)尤其应当避免,因为它们能够延长应用程序的响应时间。


4、使用StringBuilder类
字符串在.NET框架中是不可变的,这意味着改变字符串的操作符和方法会返回字符串的改变后的拷贝,这意味着性能还有提高的空间。当进行大量的字符串操作时,使用StringBuilder类就是一种比较好的选择了。
下面的C#代码测试用二种方式从10000个子字符串中生成字符串所需要的时间。第一次使用了一个简单的字符串串联操作;第二次使用了StringBuilder类。要想查看结果字符串,可以去掉下面的代码中注解行的注解符号:

<%@ Page Language="C#" %>
<script runat="server">
void Page_Load(Object Source, EventArgs E)
{
int intLimit = 10000;
DateTime startTime;
DateTime endTime;
TimeSpan elapsedTime;
string strSub;
string strWhole = "";

// 首先执行字符串连接操作
startTime = DateTime.Now;
for (int i=0; i < intLimit; i++)
{
strSub = i.ToString();
strWhole = strWhole + " " + strSub;
}
endTime = DateTime.Now;
elapsedTime = endTime - startTime;
lblConcat.Text = elapsedTime.ToString();
// lblConcatString.Text = strWhole;

// 使用stringBuilder类进行同样的操作
startTime = DateTime.Now;
StringBuilder sb = new StringBuilder();
for (int i=0; i < intLimit; i++)
{
strSub = i.ToString();
sb.Append(" ");
sb.Append(strSub);
}
endTime = DateTime.Now;
elapsedTime = endTime - startTime;
lblBuild.Text = elapsedTime.ToString();
// lblBuildString.Text = sb.ToString();
}

</script>
<html>
<body>
<form runat="server">

<h1>String Concatenation Benchmark</h1>
Concatenation:
<asp: Label
id="lblConcat"
runat="server"/>

<br/>
<asp: Label
id="lblConcatString"
runat="server"/>

<br/>
<br/>

StringBuilder:
<asp: Label
id="lblBuild"
runat="server"/>

<br/>
<asp: Label
id="lblBuildString"
runat="server"/>

</form>
</body>
</html>
二种方式的差别是相当大的:使用StringBuilder类的Append方法的速度比使用字符串连接的速度快近200倍。比较的结果如下所示:
(图:picture01)


5、只在必要时使用服务器端控件
ASP.NET中新引入了一种在服务器端运行的被称作Web Server Controls的控件,在代码中,它们经常通过下面的语法被说明:
<asp:TextBox id="txtLastName" size="40" runat="server" />
它们有时也被称作ASP控件。服务器端控件是由runat属性指示的,它的值总是“server”。
通过添加runat属性,一般的HTML控件可以被很方便地转换到服务器端运行,下面是一个简单的例子:

<input type="text" id="txtLastName" size="40" runat="server" />
可以通过id属性中指定的名字,我们可以引用程序中的控件,可以通过编程的方式设置属性和获得值,因此,服务器端处理方式有较大的灵活性。

这种灵活性是有一定代价的。每种服务器端控件都会消耗服务器上的资源。另外,除非控件、网页或应用程序明确地禁止view state,控件的状态是包含在view state的隐藏域中,并在每次回送中都会被传递,这会引起严重的性能下降。
在这方面的一个很好的例子是,网页上控件表格的应用,如果不需要在代码中引用表格中的元素,则使用无需进行服务器端处理的HTML表格。我们仍然可以在HTML表格单元中放置服务器控件,并在代码中引用服务器控件。如果需要引用任意的表格元素,例如指定的单元,则整个表格必须是服务器控件。


6. HyperLink控件、LinkButton控件的差别
对于Web访问者而言,HyperLink、LinkButton控件是一样的,但它们在功能方面仍然有较大的差异。
当用户点击控件时,HyperLink控件会立即将用户“导航”到目标URL,表件不会回送到服务器上。LinkButton控件则首先将表件发回到服务器,然后将用户导航到目标URL。如果在“到达”目标URL之前需要进行服务器端处理,则使用LinkButton控件;如果无需进行服务器端处理,则可以使用HyperLink控件。


7、注释代码
这一技巧并不是针对ASP.NET的,但它是一个良好的编程习惯。
注释不仅仅应当说明代码会执行什么操作,还应当注明原因。例如,不要仅仅在注释中说明是在遍历数组,而是要说明遍历数组是根据某一算法计算一个值,除非算法是相当简单的,否则还应当对算法进行简要的说明。
.NET工程中的不同的编程语言都有各自不同的注释符号,下面是一个简要的说明:
HTML <!-- 注释 -->
JavaScript // 注释
VBScript ' 注释
VB.NET ' 注释
C# // 注释
/* 多行内容
的注释
*/
SQL -- 注释

在服务器控件的开始和结束标记中没有注释符号,但服务器能够忽略掉所有它不能识别的属性,因此我们能够通过使用没有定义的属性来插入注释。下面是一个例子:
<asp:TextBox
id="txtLastName"
size="40"
comment="这是我的注释"
runat="server" />
在Visual Studio .NET中对源代码进行注释非常简单。高亮度显示需要注释的行,然后按Ctrl+K+C组合键添加注释。要删除注释,只需高亮度显示被注释的代码,并按下Ctrl+K+U组合键。
在C#工程中,我们还可以通过在每行的开始处使用///输入XML注释小节。在注释小节中,我们可以使用下面的XML标记组织注释:
<summary></summary>
<remarks></remarks >
<param></param>
<returns></returns>
<newpara></newpara>
要在Visual Studio .NET中查看这些XML注释的格式化的报告,我们可以首先选择“工具”菜单项,然后选择“建立注释Web网页”菜单项。


8、使用trace方法和trace属性记录Page目录中网页的执行情况
调试程序的一种古老的技术是在程序中的关健点插入输出语句,通常情况下,输出信息中会包含重要变量的值,相关信息可以输出到屏幕、日志文件或者数据库。
在ASP.NET中,通过使用Page命令中的trace属性,这种调试技术的使用更简单了。Page命令是ASPX文件开始处的一行代码,它提供编译器的指示。Page命令中包含一个或多个属性,向编译器提供使用的编程语言、代码支持文件的位置或要继承的类的名字等信息。
Page命令中的属性之一是trace,其值可能是true或false,下面是一个典型的Page命令,其中的trace属性的值是true:

<%@ Page language="c#" trace="true" %>
如果trace属性的值设置为true,由ASPX文件生成的Web页就会显示出来,除了网页本身外,关于该页的大量其他信息也会显示出来。这些信息以下面小节的形式显示在一张表格中:
·Request细节 提供Session ID、请求时间和请求的状态码。
·Trace Information 包含跟踪日志、网页生命周期中按时间先后顺序各个步骤的列表。另外,也可以向其中添加定制信息。
·控件树 以一种分层次的方式列出网页上的所有控件,包括每个控件以字节计算的大小。
·Cookies集合 列出该网页创建的所有Cookie。
·头部集合 HTTP头部以及它们的值。
·Server变量 与该网页相关的Server环境变量。

包含在Trace Information小节中的跟踪日志是最有用的,在这里我们可以插入自己的跟踪命令。trace类中有2个方法能够在跟踪日志中插入命令:Trace.Write和Trace.Warn,除了Trace.Warn命令用红色字体显示、Trace.Write命令用黑色字体显示外,它们是相同的。下面是跟踪日志的一个屏幕快照,其中包含有几个Trace.Warn命令。
跟踪日志中最方便的功能是我们可以在开发和测试过程中在整个代码中插入Trace.Write和Trace.Warn语句,而在最终交付应用程序时,可以通过改变Page命令中trace属性的值,禁止这些命令起作用,而无需在部署应用软件前删除这些输出语句。

9、使用存储过程
微软公司的SQL Server和其他现代关系数据库都使用SQL命令定义和处理查询。一个SQL语句或一系列SQL语句提交给SQL Server,SQL Server会对命令进行解析,然后创建一个查询计划并对它进行优化,然后执行该查询计划,这都需要大量的时间。
存储过程是一系列被查询处理器预解析和优化的SQL命令,这些命令会被存储起来,可以得到快速地执行。存储过程也被称作sprocs,它可以接收输入参数,使一个单一的存储过程能够处理较大范围的特定的查询。
因为sprocs是预先被解析的,对于复杂的查询更显得重要,其查询计划是预先优化的,因此调用查询过程比执行相同功能的SQL语句速度要快得多。


10、使用.NET命令行
.NET命令行工具在命令提示符窗口中运行。为了使命令能够执行,它必须驻留在命令提示符的当前目录中,或通过设置PATH环境变量。
.NET SDK在“启动”菜单上安装一个菜单项,该菜单项能够打开一个正确设置了PATH环境变量的命令提示符窗口。我们可以通过依次点击“开始”->“程序”->“Microsoft Visual Studio .NET”->“Visual Studio .NET工具”->“Visual Studio .NET命令提示符”,启动命令提示符窗口。
通过在将该菜单项从菜单上拖到桌面上时,同时按Ctrl+C键,就可以将该菜单项的快捷方式拷贝到桌面上,使用起来会非常方便。

posted @ 2006-12-13 19:43 yinxing 阅读(160) | 评论 (0)编辑 收藏

前,最常用的三种动态网页语言有ASP(Active Server Pages),JSP(JavaServer Pages),PHP (Hypertext Preprocessor)。

简 介

  ASP全名Active Server Pages,是一个WEB服务器端的开发环境,利用它可以产生和执行动态的、互动的、高性能的WEB服务应用程序。ASP采用脚本语言VBScript(Java script)作为自己的开发语言。

  PHP是一种跨平台的服务器端的嵌入式脚本语言。它大量地借用C,Java和Perl语言的语法, 并耦合PHP自己的特性,使WEB开发者能够快速地写出动态产生页面。它支持目前绝大多数数据库。还有一点,PHP是完全免费的,不用花钱,你可以从PHP官方站点(http: //www.php.net)自由下载。而且你可以不受限制地获得源码,甚至可以从中加进你自己需要的特色。

  JSP是Sun公司推出的新一代网站开发语言,Sun公司借助自己在Java上的不凡造诣,将Java从Java应用程序和Java Applet之外,又有新的硕果,就是JSP,Java Server Page。JSP可以在Serverlet和JavaBean的支持下,完成功能强大的站点程序。

  三者都提供在 HTML代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。但JSP代码被编译成 Servlet并由Java虚拟机解释执行,这种编译操作仅在对JSP页面的第一次请求时发生。在ASP 、PHP、JSP环境下,HTML代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。普通的 HTML页面只依赖于Web服务器,而ASP 、PHP、JSP页面需要附加的语言引擎分析和执行程序代码。程序代码的执行结果被重新嵌入到HTML代码中,然后一起发送给浏览器。ASP 、PHP、JSP三者都是面向Web服务器的技术,客户端浏览器不需要任何附加的软件支持。

技术特点:
ASP:
   1. 使用VBScript 、 JScript等简单易懂的脚本语言,结合HTML代码,即可快速地完成网站的应用程序。
   2. 无须compile编译,容易编写,可在服务器端直接执行。
   3. 使用普通的文本编辑器,如Windows的记事本,即可进行编辑设计。
   4. 与浏览器无关(Browser Independence), 客户端只要使用可执行HTML码的浏览器,即可浏览Active Server Pages所设计的网页内容。Active ServerPages 所使用的脚本语言(VBScript 、 Jscript)均在WEB服务器端执行,客户端的浏览器不需要能够执行这些脚本语言。
   5.Active Server Pages能与任何ActiveX scripting语言兼容。除了可使用VB Script或JScript语言来设计外,还通过plug-in的方式,使用由第三方所提供的其它脚本语言,譬如REXX 、Perl 、Tcl等。脚本引擎是处理脚本程序的COM(Component Object Model) 对象。
   6. 可使用服务器端的脚本来产生客户端的脚本。
   7. ActiveX Server Components(ActiveX 服务器组件 )具有无限可扩充性。可以使用Visual Basic 、Java 、Visual C++ 、COBOL等程序设计语言来编写你所需要的ActiveX Server Component 。

PHP:
   1 数据库连接
     PHP可以编译成具有与许多数据库相连接的函数。PHP与MySQL是现在绝佳的群组合。你还可以自己编写外围的函数去间接存取数据库。通过这样的途径当你更换使用的数据库时,可以轻松地修改编码以适应这样的变化。PHPLIB就是最常用的可以提供一般事务需要的一系列基库。但PHP提供的数据库接口支持彼此不统一,比如对Oracle, MySQL,Sybase的接口,彼此都不一样。这也是PHP的一个弱点。

JSP:
   1.将内容的产生和显示进行分离
     使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者小脚本来产生页面上的动态内容。产生内容的逻辑被封装在标识和JavaBeans群组件中,并且捆绑在小脚本中,所有的脚本在服务器端执行。如果核心逻辑被封装在标识和Beans中,那么其它人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的产生。在服务器端,JSP引擎解释JSP标识,产生所请求的内容(例如,通过存取JavaBeans群组件,使用JDBC技术存取数据库),并且将结果以HTML(或者XML)页面的形式发送回浏览器。这有助于作者保护自己的代码,而又保证任何基于HTML的Web浏览器的完全可用性。

   2.强调可重用的群组件
     绝大多数JSP页面依赖于可重用且跨平台的组件(如:JavaBeans或者Enterprise JavaBeans)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者用户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种群组织在他们现有的技能和优化结果的开发努力中得到平衡。

   3.采用标识简化页面开发
     Web页面开发人员不会都是熟悉脚本语言的程序设计人员。JavaServer Page技术封装了许多功能,这些功能是在易用的、与JSP相关的XML标识中进行动态内容产生所需要的。标准的JSP标识能够存取和实例化JavaBeans组件,设定或者检索群组件属性,下载Applet,以及执行用其它方法更难于编码和耗时的功能。通过开发定制化标识库,JSP技术是可以扩展的。今后,第三方开发人员和其它人员可以为常用功能建立自己的标识库。这使得Web页面开发人员能够使用熟悉的工具和如同标识一样的执行特定功能的构件来工作。 JSP技术很容易整合到多种应用体系结构中,以利用现存的工具和技巧,并且扩展到能够支持企业级的分布式应用。作为采用Java技术家族的一部分,以及Java 2EE的一个成员,JSP技术能够支持高度复杂的基于Web的应用。由于JSP页面的内置脚本语言是基于Java程序设计语言的,而且所有的JSP页面都被编译成为Java Servlet,JSP页面就具有Java技术的所有好处,包括健壮的存储管理和安全性。作为Java平台的一部分,JSP拥有Java程序设计语言“一次编写,各处执行”的特点。随着越来越多的供货商将JSP支持加入到他们的产品中,您可以使用自己所选择的服务器和工具,修改工具或服务器并不影响目前的应用。

应用范围:
   ASP是Microsoft开发的动态网页语言,也继承了微软产品的一贯传统,只能执行于微软的服务器产品,IIS(Internet Information Server) (windows NT)和PWS(Personal Web Server)(windows 98)上。Unix下也有ChiliSoft的组件来支持ASP,但是ASP本身的功能有限,必须通过ASP+COM的群组合来扩充,Unix下的COM实现起来非常困难。

   PHP可在Windows,Unix,Linux的Web服务器上正常执行,还支持IIS,Apache等一般的Web服务器,用户更换平台时,无需变换PHP3代码,可即拿即用。

   JSP同PHP类似,几乎可以执行于所有平台。如Win NT,Linux,Unix。在NT下IIS通过一个外加服务器,例如JRUN或者ServletExec,就能支持JSP。知名的Web服务器Apache已经能够支持JSP。由于Apache广泛应用在NT、Unix和Linux上,因此JSP有更广泛的执行平台。虽然现在NT操作系统占了很大的市场份额,但是在服务器方面Unix的优势仍然很大,而新崛起的Linux更是来势不小。从一个平台移植到另外一个平台,JSP和JavaBean甚至不用重新编译,因为Java字节码都是标准的与平台无关的。

性能比较:
   有人做过试验,对这三种语言分别做回圈性能测试及存取Oracle数据库测试。在循环性能测试中,JSP只用了令人吃惊的四秒钟就结束了20000*20000的回圈。而ASP、PHP测试的是2000*2000循环(少一个数量级),却分别用了63秒和84秒。(参考PHPLIB)。 数据库测试中,三者分别对 Oracle 8 进行 1000 次 Insert,Update,Select和Delete: JSP 需要 13 秒,PHP 需要 69 秒,ASP则 需要 73 秒。

前景分析:
  目前在国内PHP与ASP应用最为广泛。而JSP由于是一种较新的技术,国内采用的较少。但在国外,JSP已经是比较流行的一种技术,尤其是电子商务类的网站,多采用JSP。采用PHP的网站如新浪网(sina)、中国人(Chinaren)等,但由于PHP本身存在的一些缺点,使得它不适合应用于大型电子商务站点,而更适合一些小型的商业站点。首先,PHP缺乏规模支持。其次,缺乏多层结构支持。对于大负荷站点,解决方法只有一个:分布计算。数据库、应用逻辑层、表示逻辑层彼此分开,而且同层也可以根据流量分开,群组成二维数组。而PHP则缺乏这种支持。还有上面提到过的一点,PHP提供的数据库接口支持不统一,这就使得它不适合运用在电子商务中。

  ASP和JSP则没有以上缺陷,ASP可以通过Microsoft Windowsd的COM/DCOM获得ActiveX规模支持,通过DCOM和Transcation Server获得结构支持;JSP可以通过SUN Java的Java Class和EJB获得规模支持,通过EJB/CORBA以及众多厂商的Application Server获得结构支持。三者中,JSP应该是未来发展的趋势。世界上一些大的电子商务解决方案提供商都采用JSP/Servlet。比较出名的如IBM的E-business,它的核心是采用JSP/Servlet的Web Sphere。它们都是通过CGI来提供支持的。但去年10月后它推出了Enfinity,一个采用JSP/Servlet的电子商务Application Server,而且声言不再开发传统软件。

  总之,ASP,PHP,JSP三者都有相当数量的支持者,由此也可以看出三者各有所长。正在学习或使用动态页面的朋友可根据三者的特点选择一种适合自己的语言。
posted @ 2006-12-13 19:41 yinxing 阅读(252) | 评论 (0)编辑 收藏


1、DateTime 数字型
System.DateTime currentTime=new System.DateTime();
1.1 取当前年月日时分秒
currentTime=System.DateTime.Now;
1.2 取当前年
int 年=currentTime.Year;
1.3 取当前月
int 月=currentTime.Month;
1.4 取当前日
int 日=currentTime.Day;
1.5 取当前时
int 时=currentTime.Hour;
1.6 取当前分
int 分=currentTime.Minute;
1.7 取当前秒
int 秒=currentTime.Second;
1.8 取当前毫秒
int 毫秒=currentTime.Millisecond;
(变量可用中文)
2、Int32.Parse(变量) Int32.Parse("常量")
字符型转换 转为32位数字型

3、 变量.ToString()
字符型转换 转为字符串
12345.ToString("n"); //生成 12,345.00
12345.ToString("C"); //生成 ¥12,345.00
12345.ToString("e"); //生成 1.234500e+004
12345.ToString("f4"); //生成 12345.0000
12345.ToString("x"); //生成 3039 (16进制)
12345.ToString("p"); //生成 1,234,500.00%


4、变量.Length 数字型
取字串长度:
如: string str="中国";
int Len = str.Length ; //Len是自定义变量, str是求测的字串的变量名

5、System.Text.Encoding.Default.GetBytes(变量)
字码转换 转为比特码
如:byte[] bytStr = System.Text.Encoding.Default.GetBytes(str);
然后可得到比特长度:
len = bytStr.Length;

6、System.Text.StringBuilder("")
字符串相加,(+号是不是也一样?)
如:System.Text.StringBuilder sb = new System.Text.StringBuilder("");
sb.Append("中华");
sb.Append("人民");
sb.Append("共和国");

7、变量.Substring(参数1,参数2);
截取字串的一部分,参数1为左起始位数,参数2为截取几位。
如:string s1 = str.Substring(0,2);

8、String user_IP=Request.ServerVariables["REMOTE_ADDR"].ToString();
取远程用户IP地址

9、穿过代理服务器取远程用户真实IP地址:
if(Request.ServerVariables["HTTP_VIA"]!=null){
string user_IP=Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
}else{
string user_IP=Request.ServerVariables["REMOTE_ADDR"].ToString();
}

10、 Session["变量"];
存取Session值;
如,赋值: Session["username"]="小布什";

取值: Object objName=Session["username"];
String strName=objName.ToString();
清空: Session.RemoveAll();

11、String str=Request.QueryString["变量"];
用超链接传送变量。
如在任一页中建超链接:<a href=Edit.aspx?fbid=23>点击</a>
在Edit.aspx页中取值:String str=Request.QueryString["fdid"];

12、DOC对象.CreateElement("新建节点名");
创建XML文档新节点

13、父节点.AppendChild(子节点);
将新建的子节点加到XML文档父节点下

14、 父节点.RemoveChild(节点);
删除节点

15、Response
Response.Write("字串");
Response.Write(变量);
向页面输出。

Response.Redirect("URL地址");
跳转到URL指定的页面

16、char.IsWhiteSpce(字串变量,位数)——逻辑型
查指定位置是否空字符;
如:
string str="中国 人民";
Response.Write(char.IsWhiteSpace(str,2)); //结果为:True, 第一个字符是0位,2是第三个字符。

17、char.IsPunctuation('字符') --逻辑型
查字符是否是标点符号
如:Response.Write(char.IsPunctuation('A')); //返回:False

18、(int)'字符'
把字符转为数字,查代码点,注意是单引号。
如:
Response.Write((int)'中'); //结果为中字的代码:20013

19、(char)代码
把数字转为字符,查代码代表的字符。
如:
Response.Write((char)22269); //返回“国”字。

20、 Trim()
清除字串前后空格

21 、字串变量.Replace("子字串","替换为")
字串替换
如:
string str="中国";
str=str.Replace("国","央"); //将国字换为央字
Response.Write(str); //输出结果为“中央”

再如:(这个非常实用)

string str="这是<script>脚本";
str=str.Replace("<","<font><</font>"); //将左尖括号替换为<font> 与 < 与 </font> (或换为<,但估计经XML存诸后,再提出仍会还原)
Response.Write(str); //显示为:“这是<script>脚本”

如果不替换,<script>将不显示,如果是一段脚本,将运行;而替换后,脚本将不运行。
这段代码的价值在于:你可以让一个文本中的所有HTML标签失效,全部显示出来,保护你的具有交互性的站点。
具体实现:将你的表单提交按钮脚本加上下面代码:
string strSubmit=label1.Text; //label1是你让用户提交数据的控件ID。
strSubmit=strSubmit.Replace("<","<font><</font>");
然后保存或输出strSubmit。
用此方法还可以简单实现UBB代码。

22、Math.Max(i,j)
取i与j中的最大值
如 int x=Math.Max(5,10); // x将取值 10

加一点吧 23、字串对比......
加一点吧

23、字串对比一般都用: if(str1==str2){ } , 但还有别的方法:

(1)、
string str1; str2
//语法: str1.EndsWith(str2); __检测字串str1是否以字串str2结尾,返回布尔值.如:
if(str1.EndsWith(str2)){ Response.Write("字串str1是以"+str2+"结束的"); }

(2)、
//语法:str1.Equals(str2); __检测字串str1是否与字串str2相等,返回布尔值,用法同上.

(3)、
//语法 Equals(str1,str2); __检测字串str1是否与字串str2相等,返回布尔值,用法同上.

24、IndexOf() 、LastIndexOf()
查找字串中指定字符或字串首次(最后一次)出现的位置,返回索引值,如:
str1.IndexOf("字"); //查找“字”在str1中的索引值(位置)
str1.IndexOf("字串");//查找“字串”的第一个字符在str1中的索引值(位置)
str1.IndexOf("字串",3,2);//从str1第4个字符起,查找2个字符,查找“字串”的第一个字符在str1中的索引值(位置)

25、Insert()
在字串中指定索引位插入指定字符。如:
str1.Insert(1,"字");在str1的第二个字符处插入“字”,如果str1="中国",插入后为“中字国”;

26、PadLeft()、PadRight()
在字串左(或右)加空格或指定char字符,使字串达到指定长度,如:
<%
string str1="中国人";
str1=str1.PadLeft(10,'1'); //无第二参数为加空格
Response.Write(str1); //结果为“1111111中国人” , 字串长为10
%>

27、Remove()
从指定位置开始删除指定数的字符
字串对比一般都用: if(str1==str2){ } , 但还有别的方法:

1、
string str1; str2
//语法: str1.EndsWith(str2); __检测字串str1是否以字串str2结尾,返回布尔值.如:
if(str1.EndsWith(str2)){ Response.Write("字串str1是以"+str2+"结束的"); }

2、
//语法:str1.Equals(str2); __检测字串str1是否与字串str2相等,返回布尔值,用法同上.

3、
//语法 Equals(str1,str2); __检测字串str1是否与字串str2相等,返回布尔值,用法同上.

IndexOf()
查找字串中指定字符或字串首次出现的位置,返首索引值,如:
str1.IndexOf("字"); //查找“字”在str1中的索引值(位置)
str1.IndexOf("字串");//查找“字串”的第一个字符在str1中的索引值(位置)
str1.IndexOf("字串",3,2);//从str1第4个字符起,查找2个字符,查找“字串”的第一个字符在str1中的索引值(位置)

1.9 取中文日期显示——年月日时分
string strY=currentTime.ToString("f"); //不显示秒

1.10 取中文日期显示_年月
string strYM=currentTime.ToString("y");

1.11 取中文日期显示_月日
string strMD=currentTime.ToString("m");

1.12 取当前年月日,格式为:2003-9-23
string strYMD=currentTime.ToString("d");

1.13 取当前时分,格式为:14:24
string strT=currentTime.ToString("t");
更新一下, 上面不能编辑:

c#.net函数和方法集(大家一起来加啊)


1、DateTime 数字型
System.DateTime currentTime=new System.DateTime();
1.1 取当前年月日时分秒
currentTime=System.DateTime.Now;
1.2 取当前年
int 年=currentTime.Year;
1.3 取当前月
int 月=currentTime.Month;
1.4 取当前日
int 日=currentTime.Day;
1.5 取当前时
int 时=currentTime.Hour;
1.6 取当前分
int 分=currentTime.Minute;
1.7 取当前秒
int 秒=currentTime.Second;
1.8 取当前毫秒
int 毫秒=currentTime.Millisecond;
(变量可用中文)

1.9 取中文日期显示——年月日时分
string strY=currentTime.ToString("f"); //不显示秒

1.10 取中文日期显示_年月
string strYM=currentTime.ToString("y");

1.11 取中文日期显示_月日
string strMD=currentTime.ToString("m");

1.12 取中文年月日
string strYMD=currentTime.ToString("D");

1.13 取当前时分,格式为:14:24
string strT=currentTime.ToString("t");

1.14 取当前时间,格式为:2003-09-23T14:46:48
string strT=currentTime.ToString("s");

1.15 取当前时间,格式为:2003-09-23 14:48:30Z
string strT=currentTime.ToString("u");

1.16 取当前时间,格式为:2003-09-23 14:48
string strT=currentTime.ToString("g");

1.17 取当前时间,格式为:Tue, 23 Sep 2003 14:52:40 GMT
string strT=currentTime.ToString("r");

1.18获得当前时间 n 天后的日期时间
DateTime newDay = DateTime.Now.AddDays(100);

2、Int32.Parse(变量) Int32.Parse("常量")
字符型转换 转为32位数字型

3、 变量.ToString()
字符型转换 转为字符串
12345.ToString("n"); //生成 12,345.00
12345.ToString("C"); //生成 ¥12,345.00
12345.ToString("e"); //生成 1.234500e+004
12345.ToString("f4"); //生成 12345.0000
12345.ToString("x"); //生成 3039 (16进制)
12345.ToString("p"); //生成 1,234,500.00%


4、变量.Length 数字型
取字串长度:
如: string str="中国";
int Len = str.Length ; //Len是自定义变量, str是求测的字串的变量名

5、System.Text.Encoding.Default.GetBytes(变量)
字码转换 转为比特码
如:byte[] bytStr = System.Text.Encoding.Default.GetBytes(str);
然后可得到比特长度:
len = bytStr.Length;

6、System.Text.StringBuilder("")
字符串相加,(+号是不是也一样?)
如:System.Text.StringBuilder sb = new System.Text.StringBuilder("");
sb.Append("中华");
sb.Append("人民");
sb.Append("共和国");

posted @ 2006-12-13 19:36 yinxing 阅读(207) | 评论 (0)编辑 收藏

2006年9月17日 #

  1.不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。


  2.初学者请不要看太多太多的书那会误人子弟的,先找本系统的学,很多人用了很久都是只对部分功能熟悉而已,不系统还是不够的。


  3.看帮助,不要因为很难而自己是初学者所以就不看;帮助永远是最好的参考手册,虽然帮助的文字有时候很难看懂,总觉得不够直观。


  4.不要被对象、属性、方法等词汇所迷惑;最根本的是先了解最基础知识。


  5.不要放过任何一个看上去很简单的小问题--他们往往并不那么简单,或者可以引伸出很多知识点;不会举一反三你就永远学不会。


  6.知道一点东西,并不能说明你会写脚本,脚本是需要经验积累的。


  7.学脚本并不难,JSP、ASP、PHP等等也不过如此--难的是长期坚持实践和不遗余力的博览群书;


  8.看再多的书是学不全脚本的,要多实践。


  9.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;


  10.学习脚本最好的方法之一就是多练习;


  11.在任何时刻都不要认为自己手中的书已经足够了;


  12.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;


  13.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;


  14.请把书上的例子亲手到电脑上实践,即使配套光盘中有源文件;


  15.把在书中看到的有意义的例子扩充;并将其切实的运用到自己的工作中;


  16.不要漏掉书中任何一个练习——请全部做完并记录下思路;


  17.当你用脚本到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个代码的完整性,然后分析自己的错误并重新编写和工作。


  18.别心急,写脚本确实不容易;水平是在不断的实践中完善和发展的;


  19.每学到一个脚本难点的时候,尝试着对别人讲解这个知识点并让他理解----你能讲清楚才说明你真的理解了;


  20.记录下在和别人交流时发现的自己忽视或不理解的知识点;


  21.保存好你做过的所有的源文件----那是你最好的积累之一;


  22.对于网络,还是希望大家能多利用一下,很多问题不是非要到论坛来问的,首先你要学会自己找答案,比如google、百度都是很好的搜索引擎,你只要输入关键字就能找到很多相关资料,别老是等待别人给你希望,看的出你平时一定也很懒!


  23,到一个论坛,你学会去看以前的帖子,不要什么都不看就发帖子问,也许你的问题早就有人问过了,你再问,别人已经不想再重复了,做为初学者,谁也不希望自己的帖子没人回的。


  24,虽然不是打击初学者,但是这句话还是要说:论坛论坛,就是大家讨论的地方,如果你总期望有高手总无偿指点你,除非他是你亲戚!!讨论者,起码是水平相当的才有讨论的说法,如果水平真差距太远了,连基本操作都需要别人给解答,谁还跟你讨论呢。能找到很多相关资料,别老是等待别人给你希望,看的出你平时一定也很懒!


 
  浮躁的人容易问:我到底该学什么;----别问,学就对了;
  浮躁的人容易问:JS有钱途吗;----建议你去抢银行;
  浮躁的人容易说:我要中文版!我英文不行!----不行?学呀!
  浮躁的人分两种:只观望而不学的人;只学而不坚持的人;
  浮躁的人永远不是一个高手。

posted @ 2006-09-17 14:07 yinxing 阅读(175) | 评论 (1)编辑 收藏

2006年9月16日 #

     摘要: 推荐大家看...  阅读全文
posted @ 2006-09-16 12:43 yinxing 阅读(263) | 评论 (1)编辑 收藏