⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 123456.txt

📁 c#编程入门,我在其它网站收集的."功能描述要求的字数太多能不能少一点"
💻 TXT
📖 第 1 页 / 共 5 页
字号:
         4:  {  
         5:   System.Console.WriteLine("Hello World");  
         6:  }  
         7: }  

        在C#中,代码块(语句组)由大括弧({和})所括住。所以,甚至你以前没有C++的经验,你也可以说出Main()方法就  
是HelloWorld 类语句的一部分,因为类被括在所定义的大括弧中。  
        C#应用程序(可执行)的入口点就是 static Main 方法,它必须包含在一个类中。仅有一个类能使用该标志定义,  
除非你告诉编译器它应使用哪一个 Main 方法(否侧,会产生一个编译错误)。  
        和C++相比,Main的第一个字母是大写的M,而不是你曾经使用过的小写字母。在这个方法中,你的程序开始并结  
束。方法中可以调用其它方法——如这个例子中,用于输出文本——或者创建对象并激活该方法。  
        正如你所看到的,Main方法返回一个void类型。  
        public static void Main()  
        尽管看到这些语句时,C++程序员肯定会觉得似曾相识,但是其他程序员并不如此。首先,public 的访问标志告  
诉我们这个方法可以被任何程序访问,这是它被调用的必要条件。其次,static 意味着没有先创建类的实例也可以调用方  
法——你所要做的就是用类名调用方法。  
        HelloWorld.Main();  
        但是,我不赞成在Main方法中执行这行代码,递归会导致堆栈溢出。  
        另一重要的方面是返回类型。对于方法Main,可选择void (意味着根本就没有返回值),或用int 为整型结果(应  
用程序返回的错误级别)。因此,两种可能的Main方法为:  
        public static void Main()  
        public static int Main()  

        C++程序员会同样知道后面我要提到的——可以传给应用程序的命令行参数数组。如:  
        public static void Main(string[] args)  

        我现在并不想详细地说明如何访问参数,但我想事先给C++程序员一个警告:和C++相比,应用程序路径不是这个  
数组的一部分。仅仅那些参数包含在这个数组中。  
        在对Main方法并不简短的介绍之后,让我们把注意力集中到唯一真正的代码行——这行代码在屏幕上显示"Hello   
Wold"。  
         System.Console.WriteLine("Hello World");  
        假如不是由于有了System,大家会马上猜到WriteLine是Console 对象的一个静态方法。那么System代表什么呢?   
它是包含Console对象的名字空间(范围),实际上并不是每次都在Console对象前加上名字空间的前缀,你可以象清单3.2所  
示范的那样,在应用程序中引入名字空间。  

         清单3.2   在应用程序中引入名字空间  
         1: using System;  
         2:   
         3: class HelloWorld  
         4: {  
         5:  public static void Main()  
         6:  {  
         7:   Console.WriteLine("Hello World");  
         8:  }  
         9: }  

         所有你要做的就是给System名字空间加一个using指令。在这之后,不再需要规定名字空间,就可以使用它们的  
方法和属性了。NGWS 框架体系中有很多的名字空间,我只对巨大的名字空间池中的少数几个对象进行探讨。但在第八  
章 "用C#写组件"将介绍为你的对象创建自己的名字空间。  

3.2  编译应用程序  
         由于NGWS  Runtime支持所有的编译器(VB、C++和C#),你不必买一个单独的开发工具用来把应用程序编译成IL  
(中间语言)。但是,如果你从没有用过命令行编译器编译过应用程序(仅懂得编译名,而没有熟记), 它还是你的首要选  
择。  
        打开命令提示符并切换到存 helloworld.cs 的目录。敲入以下命令:  
        csc helloworld.cs  

        helloworld.cs 被编译并链接成hellworld.exe。因为源码没有错误(那当然!),C#编译器没有出错提示,在整个  
编译过程没有丝毫停顿。如图3.2所示。  

         图3.2  使用命令行编译器 csc.exe 编译应用程序  

         现在你已经准备好运行第一个真正用C#编写的应用程序。简单地在命令行上敲入helloworld,输出结果  
为 "Hello World"。  
        在继续往下介绍之前, 我想稍为想象一下第一个应用程序和一个编译器开关的使用:  
        csc /out:hello.exe helloworld.cs  
        这个开关告诉编译器输出文件命名为hello.exe。虽然这不是什么绝招,但它是这本书中用到的未来编译器的基本  
功。  
3.3  输入和输出  
         到目前为止,我仅仅演示了把简单的常量字符串输出到屏幕。尽管这本书只介绍了C#编程的概念而不介绍用户接  
口编程,但我需要让你迅速学会简单的屏幕输入和输出方法——相应于C的scanf 和 printf,或者C++的cin 和cout。我不  
能提供VB相应的函数,因为屏幕访问不是该核心语言的一部分。  
         你只需要能够读用户的输入并提示一些信息给用户。清单3.3 说明如何读一个用户请求的名字输入,并显示一条  
已定制好的"Hello" 信息。  

         Listing 3.3 从控制台读输入信息  

         1: using System;  
         2:   
         3: class InputOutput  
         4: {  
         5:  public static void Main()  
         6:  {  
         7:   Console.Write("Please enter your name: ");  
         8:   string strName = Console.ReadLine();  
         9:   Console.WriteLine("Hello " + strName);  
         10:  }  
         11: }  

        第7行使用Console对象的一个新方法用于提示文本信息给用户,它就是Write方法。它与WriteLine不同的地方在  
于它输出时不换行。我使用这种方法以便用户可以在信息提示的同一行输入名字。  
        在用户输入他的名字后(并按回车键),ReadLine 方法读入了一个字符串变量。名字字符串连接到常量字符  
串"Hello",并用我们早已熟悉的WriteLine方法显示出来(见图3.2)。  

        图3.3  编译和运行定制的Hello 应用程序  

        你几乎已学完了NGWS框架必要的输入和输出功能。但是,你还需要为用户显示多个值。为用户写一个格式串。清  
单3.4展示一个例子。  

        清单 3.4 使用不同的输出方法  

        1: using System;  
        2:   
        3: class InputOutput  
        4: {  
        5:  public static void Main()  
        6:  {  
        7:   Console.Write("Please enter your name: ");  
        8:   string strName = 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);  

        当然,并不仅限于只使用字符串变量。你可以使用任何类型,这些类型在后面的第四章 "C#类型"中有讨论。  

3.4 添加注释  
        当写代码时,你应为代码写注释条文,解释实现的内容、变更史等。尽管你注释中提供的信息(如果有的话)是给  
你写的,但是你还是必须遵守写C#注释的方法。清单3.5 显示采用的两种不同的方式。  

        清单3.5  给你的代码添加注释  

         1: using System;  
         2:   
         3: class HelloWorld  
         4: {  
         5:  public static void Main()  
         6:  {  
         7:   // 这是单行注释  
         8:   /* 这种注释   
         9:   跨越多行 */  
        10:   Console.WriteLine(/*"Hello World"*/);  
        11:  }  
        12: }  

        "//" 符号用于单行注释。你可以用"//"注释当前所在行,或是跟在一个代码语句的后面:  
        int nMyVar = 10; // 胡说八道  
        所有在"//"后面的被认为是一条注释;所以,你可以同样用它们来注释一整行或一行源代码的部分。这种注释方  
式同C++中介绍的相似。  
        如果你的注释跨越多行,必须使用"/* */"的字符组合。这种方式在C中有效。除了单行注释外,这种方式在C++和  
C#中还同样有效。因C/C++和C#都使用这种多行注释方式,所以它们也使用相同的终结符。请看下列代码行:  
        /* Console.WriteLine("Hello World"); */  

        我使用"/* */"简单地注释一整行。现在我假定这一行是很长代码的一部分,而且我决定要暂时禁用一个程序块:  
        /*  
        ...  
        /* Console.WriteLine("Hello World"); */  
        ...  
        */  

        这个结构所存在的问题为: "Hello World"那一行后面的"*/"终止了始于第一行的"/*"的注释,余下的代码对编  
译器有效,你将看到一些有趣的出错信息。至少 最后的"*/"被标志为归属错误。我只不过想提醒一下,让你了解这种错  
误。  

3.5小结  
       在这一章中,你创建、编译并执行了第一个C#应用程序:著名的"Hello World"程序。我用这个短短的应用程序给  
你介绍有关Main方法,它是一个应用程序的入口点,也是出口点。这个方法可以没有返回值或返回一个整数错误级别。如  
果你的应用程序用参数调用,你可以(但不必要)读出并使用它们。  
       在编译和测试应用程序后,你学到了更多的由Console对象提供的有关输入和输出的方法。对于学习C#而言,它们  
足以创建出有意义的控制台例子,但用户接口的大部分将是WFC、WinForms或者ASP+。


 既然你知道了怎样创建一个简单的C#程序,我将会给你介绍C#的类型系统。在这一章中,你学到如何使用不同的值和  
引用类型,加框和消框机制能为你作些什么。尽管这一章的不侧重于例子,但你可以学到很多重要的信息,关于如何创建  
现成类型的程序。  
4.1 值类型   
    各种值类型总是含有相应该类型的一个值。C#迫使你初始化变量才能使用它们进行计算-变量没有初始化不会出问题,  
因为当你企图使用它们时,编译器会告诉你。     每当把一个值赋给一个值类型时,该值实际上被拷贝了。相比,对于引  
用类型,仅是引用被拷贝了,而实际的值仍然保留在相同的内存位置,但现在有两个对象指向了它(引用它)。C#的值类  
型可以归类如下:  
·简单类型(Simple types )  
·结构类型(struct types)  
·枚举类型(Enumeration types)  
4.1.1  简单类型  
    在C#中出现的简单类型共享一些特性。第一,它们都是.NET系统类型的别名。第二,由简单类型组成的常量表达式仅  
在编译时而不是运行时受检测。最后,简单类型可以按字面被初始化。以下为C#简单类型归类:  
·整型  
·布尔型  
· 字符型 (整型的一种特殊情况)  
·浮点型  
·小数型  

4.1.1.1  整型  
    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位。  

4.1.1.2  布尔型  
    布尔数据类型有true和false两个布尔值。可以赋于true或false值给一个布尔变量,或可以赋于一个表达式,其所求  
出的值等于两者之一:  
bool bTest = (80 > 90);  
         与C和C++相比,在C#中,true值不再为任何非零值。不要为了增加方便而把其它整型转换成布尔型。  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -