1:VS.NET的开发环境–1:Windows2000Professional,Windows2000Server,Windows2000AdvancedServer,WindowsXP–.NetFramework(以前叫NGWS)–IE5.5以上2:调试技巧这个我们将会在后面在给大家提到,会在具体的项目里给大家实现,在这里将不在说了.第一章第一节:VS.NET介绍2:部署配置1:如何发布部署?--首先做好一个项目,在检查调试无错误的情况下选择工具菜单下的生成发布网站,如图所示:选择你要保存的路径,单击确定就可以了。3:如何安装IIS?打开控制面板添加删除程序添加删除windows组件。如图:如果你的IIS是安装过的那么就有那个小勾,如果没有装就不会有那个小勾,然后把那个小勾勾上,在单击下一步之前请先将你的系统光盘放入光区就可以了。4:如何配置IIS?1.首先打开IIS,依次展开本地计算机网站默认网站,右键单击默认网站,选择属性.如图:然后选择目录安全性,单击编辑.如图:将集成windows身份验证前的勾勾上.5:补充如果你的电脑上装了.NET2003,又装了.NET2005的话,那么你就要做如下设置.如图:将ASP.NET版本选为你要开发的那个版本就可以了.第二节:C#.NET介绍1:语法介绍最简单的HelloWorld程序1:classHelloWorld2:{3:publicstaticvoidMain()4:{5:System.Console.WriteLine(HelloWorld);6:}7:}在C#中,代码块(语句组)由大括弧({和})所括住。所以,甚至你以前没有C++的经验,你也可以说出Main()方法就是HelloWorld类语句的一部分,因为类被括在所定义的大括弧中。C#应用程序(可执行)的入口点就是staticMain方法,它必须包含在一个类中。仅有一个类能使用该标志定义,除非你告诉编译器它应使用哪一个Main方法(否侧,会产生一个编译错误)。和C++相比,Main的第一个字母是大写的M,而不是你曾经使用过的小写字母。在这个方法中,你的程序开始并结束。方法中可以调用其它方法——如这个例子中,用于输出文本——或者创建对象并激活该方法。正如你所看到的,Main方法返回一个void类型。publicstaticvoidMain()尽管看到这些语句时,C++程序员肯定会觉得似曾相识,但是其他程序员并不如此。首先,public的访问标志告诉我们这个方法可以被任何程序访问,这是它被调用的必要条件。其次,static意味着没有先创建类的实例也可以调用方法——你所要做的就是用类名调用方法。HelloWorld.Main();但是,我不赞成在Main方法中执行这行代码,递归会导致堆栈溢出。另一重要的方面是返回类型。对于方法Main,可选择void(意味着根本就没有返回值),或用int为整型结果(应用程序返回的错误级别)。因此,两种可能的Main方法为:publicstaticvoidMain()publicstaticintMain()大家在看下面这个列子:usingSystem;2:3:classHelloWorld4:{5:publicstaticvoidMain()6:{7:Console.WriteLine(“HelloWorld”);8:}9:}让我们把注意力集中到唯一真正的代码行——这行代码在屏幕上显示“HelloWold”。System.Console.WriteLine(“HelloWorld”);假如不是由于有了System,大家会马上猜到WriteLine是Console对象的一个静态方法。那么System代表什么呢?它是包含Console对象的名字空间(范围),实际上并不是每次都在Console对象前加上名字空间的前缀,你可以象清单3.2所示范的那样,在应用程序中引入名字空间。所有你要做的就是给System名字空间加一个using指令。在这之后,不再需要规定名字空间,就可以使用它们的方法和属性了。NGWS框架体系中有很多的名字空间,我只对巨大的名字空间池中的少数几个对象进行探讨。在后面我们将介绍为你的对象创建自己的名字空间。2:输入和输出到目前为止,我仅仅演示了把简单的常量字符串输出到屏幕。尽管这本书只介绍了C#编程的概念而不介绍用户接口编程,但我需要让你迅速学会简单的屏幕输入和输出方法——相应于C的scanf和printf,或者C++的cin和cout。我不能提供VB相应的函数,因为屏幕访问不是该核心语言的一部分。你只需要能够读用户的输入并提示一些信息给用户。清单3.3说明如何读一个用户请求的名字输入,并显示一条已定制好的Hello信息。从控制台读输入信息1:usingSystem;2:3:classInputOutput4:{5:publicstaticvoidMain()6:{7:Console.Write(Pleaseenteryourname:);8:stringstrName=Console.ReadLine();9:Console.WriteLine(Hello+strName);10:}11:}第7行使用Console对象的一个新方法用于提示文本信息给用户,它就是Write方法。它与WriteLine不同的地方在于它输出时不换行。我使用这种方法以便用户可以在信息提示的同一行输入名字。在用户输入他的名字后(并按回车键),ReadLine方法读入了一个字符串变量。名字字符串连接到常量字符串“Hello”,并用我们早已熟悉的WriteLine方法显示出来(见图3.2)。3:编译和运行定制的Hello应用程序你几乎已学完了NGWS框架必要的输入和输出功能。但是,你还需要为用户显示多个值。为用户写一个格式串。清单3.4展示一个例子。清单3.4使用不同的输出方法1:usingSystem;2:3:classInputOutput4:{5:publicstaticvoidMain()6:{7:Console.Write(“Pleaseenteryourname:”);8:stringstrName=Console.ReadLine();9:Console.WriteLine(“Hello{0}”,strName);10:}11:}第9行包含了使用格式串的Console.WriteLine语句。格式串例子如下:“Hello{0}”{0}代替WriteLine方法的参数表中紧随格式串后的第一个变量。你可以用该技术格式化超过三个变量。Console.WriteLine(“Hello{0}{1},from{2}”,strFirstname,strLastname,strCity);当然,并不仅限于只使用字符串变量。你可以使用任何类型.4:添加注释当写代码时,你应为代码写注释条文,解释实现的内容、变更史等。尽管你注释中提供的信息(如果有的话)是给你写的,但是你还是必须遵守写C#注释的方法。清单3.5显示采用的两种不同的方式。清单3.5给你的代码添加注释1:usingSystem;2:3:classHelloWorld4:{5:publicstaticvoidMain()6:{7://这是单行注释8:/*这种注释9:跨越多行*/10:Console.WriteLine(/*“HelloWorld”*/);11:}12:}“//”符号用于单行注释。你可以用“//”注释当前所在行,或是跟在一个代码语句的后面:intnMyVar=10;//注释所有在“//”后面的被认为是一条注释;所以,你可以同样用它们来注释一整行或一行源代码的部分。这种注释方式同C++中介绍的相似。如果你的注释跨越多行,必须使用“/**/”的字符组合。这种方式在C中有效。除了单行注释外,这种方式在C++和C#中还同样有效。因C/C++和C#都使用这种多行注释方式,所以它们也使用相同的终结符。请看下列代码行:/*Console.WriteLine(“HelloWorld”);*/我使用“/**/”简单地注释一整行。现在我假定这一行是很长代码的一部分,而且我决定要暂时禁用一个程序块:/*.../*Console.WriteLine(“HelloWorld”);*/...*/这个结构所存在的问题为:“HelloWorld”那一行后面的“*/”终止了始于第一行的“/*”的注释,余下的代码对编译器有效,你将看到一些有趣的出错信息。至少最后的“*/”被标志为归属错误。5:C#类型5.1值类型各种值类型总是含有相应该类型的一个值。C#迫使你初始化变量才能使用它们进行计算-变量没有初始化不会出问题,因为当你企图使用它们时,编译器会告诉你。每当把一个值赋给一个值类型时,该值实际上被拷贝了。相比,对于引用类型,仅是引用被拷贝了,而实际的值仍然保留在相同的内存位置,但现在有两个对象指向了它(引用它)。C#的值类型可以归类如下:·简单类型(Simpletypes)·结构类型(structtypes)·枚举类型(Enumerationtypes)5.1.1简单类型在C#中出现的简单类型共享一些特性。第一,它们都是.NET系统类型的别名。第二,由简单类型组成的常量表达式仅在编译时而不是运行时受检测。最后,简单类型可以按字面被初始化。以下为C#简单类型归类:·整型·布尔型·字符型(整型的一种特殊情况)·浮点型·小数型整型C#中有9个整型。sbyte、byte、short、ushort、int、uint、long、ulong和char(单独一节讨论)。它们具有以下特性:·sbyte型为有符号8位整数,取值范围在128~127之间。·bytet型为无符号16位整数,取值范围在0~255之间。·short型为有符号16位整数,取值范围在-32,768~32,767之间。·ushort型为无符号16位整数,取值范围在0~65,535之间。·int型为有符号32位整数,取值范围在-2,147,483,648~2,147,483,647之间。·uint型为无符号32位整数,取值范围在0~4,294,967,295之间。·long型为64位有符号整数,取值范围在9,223,372,036,854,775,808~9,223,372,036,854,775,807之间。·ulong型为64位无符号整数,取值范围在0~18,446,744,073,709,551,615之间。VB和C程序员都可能会对int和long数据类型所代表的新范围感到惊讶。和其它的编程语言相比,在C#中,int不再取决于一个机器的字(word)的大小,而long被设成64位。布尔型布尔数据类型有true和false两个布尔值。可以赋于true或false值给一个布尔变量,或可以赋于一个表达式,其所求出的值等于两者之一:boolbTest=(8090);与C和C++相比,在C#中,true值不再为任何非零值。不要为了增加方便而把其它整型转换成布尔型。字符型字符型为一个单Unicode字符。一个Unicode字符16位长,它可以用来表示世界上多种语言。可以按以下方法给一个字符变量赋值:charchSomeChar='A';除此之外,可以通过十六进制转义符(前缀\x)或Unicode表示法给变量赋值(前缀\u):charchSomeChar='\x0065';charchSomeChar='\u0065';不存在把char转换成其它数据类型的隐式转换。这就意味着,在C#中把一个字符变量当作另外的整数数据类型看待是行不通的——这是C程序员必须改变习惯的另一个方面。但是,可以运用显式转换:charchSomeChar=(char)65;intnSomeInt=(int)'A';在C中仍然存在着转义符(字符含义)。转义符字符名\'单引号\双引号\\反斜杠\0空字符\a感叹号(Alert)\b退格\f换页\n新行\r回车\t水平tab\v垂直tab浮点型两种数据类型被当作浮点型:float和double。它