旸's profileSakura是乖孩子PhotosBlogListsMore ![]() | Help |
|
05/07/2006 第一章 第三节第一章 概述
第三节 C# 标识符和关键字 §1:C# 标识符
标识符(identifier)是程序中用来标明变量、类型的“名称”,是 C# 语言中的基本构成部分,就像我们学的任何一种语言中单词的地位一样~在 C# 上面的“Hello,World”例子中,我们使用的“Hello”、“Main”、“System”、“WriteLine”、“Console”都是标识符(可以看到从命名空间到类、方法都需要标识符来定义名称)。 在 C# 里面标识符里面也是要有一定的规范的~(比如说如果数字“1234”也能理解成标识符的话~就没法表示数字了),具体的要求是:标识符中必须只有下划线“_”、Unicode 字母字符和 Unicode 数字字符,其中第一位还不可以是数字,其他所有半角的符号和空白字符、换行字符、控制字符都不可以出现。下面给大家举几个例子:
一些符合要求的标识符: a(只有字母) A(注意 C# 中区分大小写~两个标识符代表的意思是不同的~) a1(数字和字母) _Interface(字符和下划线) 我(中文是标准的 Unicode 字母字符) 一些不符合要求的标识符:
a b(中间有空格) a+b(有不符合要求的字符“+”) 123xyz(用数字作第一个字符) 另外,下面说到的所有关键字也不允许作为标识符~
§2:C# 关键字
关键字(Keyword)是系统保留的特殊单词,从理论上来说~关键字不算作标识符,但是我们也可以理解为一类特殊的标识符,系统定义了他们的作用,我们不能再用其他的方法使用了。在 C# 2.0 的定义中,关键字有“全局关键字”和“上下文关键字”两种: 全局关键字(不管在什么时候都不能够任意使用):
abstract as base bool break byte case catch char checked
class const continue decimal default
delegate do double else enum
event explicit extern false finally
fixed float for foreach goto
if implicit in int interface
internal is lock long namespace
new null object operator out
override params private protected public
readonly ref return sbyte sealed
short sizeof stackalloc static string
struct switch this throw true
try typeof uint ulong unchecked
unsafe ushort using virtual volatile
while void
上下文关键字(在有些时候才有特殊的含义) get partial set value where yield 还有一些虽然没有规定是关键字,但是也有一些特殊用途的标识符: add assembly field method module param property remove type 这些关键字以后大家都会一个个慢慢学到的~
关键字是不能作为标识符的,但是如果有时候我们需要使用和关键字名称相同的标识符,一个替代的方法是使用字符“@”作为前缀,比如说“base”是关键字,不能作为标识符,但是“@base”就是一个可以被接受的标识符了~
补充的内容:
Unicode:Unicode 标准(Unicode Standard)是一种用来统一字符编码的规范。在计算机刚刚普及的时候,因为许多国家的语言中有自己的字符,所以为了编码这些字符,每个国家都制定了自己的编码标准,所以一个在某种语言下正常的程序常常在另一种语言环境下变成乱码。为了解决这个问题,Unicode 标准就作为一种通用字符表示标准诞生了。所有不同的字符都变成了一个统一的编号和一个名称,目前 Unicode 字符支持六万多个不同字符,包括了各种语言中的文字,同时还有增加一百多万个字符的余地。C# 中所有代码都使用 Unicode 编码,并且允许任何地方使用“\uxxxx”(xxxx 是这个字符的 4 位 16 进制编码)的形式表示 Unicode 字符。
Unicode 字符类:Unicode 标准包含了不同语言中的字母和数字,其中的“字母”包括拉丁字母、中文、日文和其他语言中的字符,数字中也包含了希腊数字、阿拉伯语中的数字这些我们见不到的字符。所以在使用 Unicode 字符的 C# 中,中文字符也是完全允许的标准 Unicode 字母。
标识符命名规范:理论上来说,标识符可以用任何允许的字符组合,但是一般的,我们希望标识符能够简单易记~这样大家自己用起来方便,别人也容易看懂标识符的含义。C# 的命名约定以后我们还要详细说明~现在只是和大家简单说一下:
1、尽量只用英文,因为在编译好之后,其他语言要调用大家写好的内容的时候这些语言可能不支持 Unicode 字符,如果大家用中文或者其他的复杂字符的话就有可能产生问题。
2、让所有标识符都是有意义的单词或者词组,这样便于理解。比如说~上面的“System”、“WriteLine”就很让人容易理解。如果取名成为“xyz111”的话~别人就不容易知道程序想做什么。例外是临时变量可以用简单的写法。比如说计数用的时候可以用 i、j 简单表示,当然如果还是用单词就更好了~
@ 标识符:用字符“@”作为前缀,可以把一个关键字定义为标识符,@ 字符也可以在不是关键字的标识符之前使用,但是请大家不管在什么情况下都不要这么做,也不要在前面添加超过一个的 @ 字符。@ 字符不是标识符的组成部分,所以 a 和 @a 事实上指的是同一个标识符。如果不是出于使用关键字的目的,这样就很容易引起混乱。 19/06/2006 第一章 第二节色彩定义:命名空间 类 关键字 字符串
第一章 概述
§1:Hello World
作为计算机语言的惯例,先提供一个在屏幕上输出“Hello,World”的小程序,让大家了解 C#。 namespace Hello 大家可以创建一个新的 C# 项目之后,粘贴这些代码,运行的结果就是:系统弹出一个命令提示符窗口,其中显示了消息“Hello,World!”。(因为系统在显示之后,程序就运行完毕了,因此窗口常常只是一闪而逝。)
§2:C# 的程序结构
总的来说,C# 的程序可以拆分成下面这些部分: 程序(Program):C# 的编译单位,大家创建的每一个项目都被称作“程序”。C# 的编译器每次处理的只能是程序,而不能直接处理其中包含的某一个子类型。 程序集(Assembly):C# 的运行单位。程序编译之后,就被称作“程序集”,每个程序集的外观就是一个可执行文件(*.exe)或者动态链接库(*.dll)。它们的区别在于编译的时候指定程序是被处理为应用程序(Application)还是库(Library)。应用程序可以直接运行,就像大家平常使用的一样。而库中包含可以使用的各种类型,用在许多程序中共同使用,本身不能直接运行。 类型(Type):包括类(Class)、结构(Struct)、接口(Interface)、枚举(Enum)和委托(Delegate)。这些概念在以后会很详细的说明。作为面向对象的语言,C# 的主程序中包括的就是一个个类型的定义,在上面的“Hello,World”程序中就定义了一个类类型“Hello”。 成员(Member):包括字段(Field)、方法(Method)、属性(Property)和事件(Event)。这些概念以后也会讲到。成员是一个类型的基本结构。类型的定义中就是各种成员的定义。这些成员使类型拥有了数据和使用能力,让一个类型真正有了实际的意义。上面的程序中,类型“Hello”只有一个成员:方法“Main”,用来输出“Hello,World”的消息。 命名空间(Namespace):类型的组织方式。类型有名称,就像文件一样。为了防止过多的类型中不小心产生名称一样的情况,也为了根据不同的作用给各种类型分类,“命名空间”就像文件夹一样,把类型封装在不同的地方。上面的“Hello”类型就被包装在“Hello”命名空间中。当然命名空间也可以包含命名空间,就像文件夹一层包着一层一样(爆)。
§3:C# 和 .NET Framework
上面的程序中,Main 方法中调用了 System 命名空间中的 Console 类中的 WriteLine 方法,但是这个方法我们并没有自己定义过,那是怎么回事呢?事实上,这些都是 .NET Framework 类库的一部分。.NET Framework 又是什么呢?简单的说,就是 C# 运行需要的一个很大的类型库,其中包括了大概上万个类型供我们使用~很多的内容还是我们根本不能简单实现的~举例来说~如果要我们完全独立的完成上面的 WriteLine 函数做的工作,就需要许多和底层的硬件打交道的内容了~作为“高级”的编程语言,.NET Framework 完成了许多底层的任务,所以我们就可以把力气全部用在自己的程序上,而不用关心系统怎么处理键盘、鼠标这些事情了~ 补充的内容:
安装、启动和运行 Visual Studio .NET 2005
在获取了 Visual Studio .NET 2005 的安装光盘或者安装文件之后,可以运行其中的“autorun.exe”就可以启动安装向导。接下来的工作和大部分程序的安装是一样的~在安装的中间,可以选择安装的位置,也可以选择安装的内容。如果没有什么特别的情况的话,建议大家选择完全安装,这样以后需要用到任何功能的时候就不会需要再重新安装了~安装好的 Visual Studio .NET 2005 大概占用 2.5GB 的硬盘空间。 安装完毕后,开始菜单中就会有一个“Visual Studio .NET 2005”的项目,单击之后就可以启动运行。第一次运行的时候,程序会让我们选择运行界面。一般来说选择“常规”界面就可以了。
安装 MSDN for Visual Studio .NET 2005
MSDN(Microsoft Developer Network)是一个帮助和支持中心,里面有许许多多的帮助技术文章和说明。MSDN for Visual Studio .NET 2005 是一个 MSDN 的子集,其中的内容是 Visual Studio .NET 2005 需要的全部帮助文档(包括 Visual Studio .NET 2005 的使用帮助和 .NET Framework 中所有类型和成员的说明)。如果大家获取了这份帮助文档,就可以运行里面的安装程序,这样在运行 Visual Studio .NET 2005 中如果就可以查看帮助,不然的话系统会提示“没有本地帮助文件”。MSDN for Visual Studio .NET 2005 大概占用 3GB 的硬盘空间。
创建项目和设置断点
我们现在使用的是 C# 程序,所以在程序的主界面的菜单上选择“新建”|“项目”,然后在左边的列表中选择“Visual C# 项目”,因为我们使用的是标准的输出,所以在右边的项目类型中选择“控制台应用程序”。以后我们需要创建很多有按钮、对话框这样的程序,这时候要创建的是“Windows 应用程序”。 运行之后,程序窗口常常只是闪烁一下又被关闭了,这时候可以通过“断点”的方法进行控制。断点是一项技术,可以让程序在指定的位置暂停~比如在上面的程序中,我们把光标放到“return”那一行,然后单击“调试”|“切换断点”或者是按一下F9键,这一行最左边会出现一个红色的球,表示这一行已经设置了断点。在运行程序,到这一行的时候,程序会中断,同时左边会有黄色的箭头指示目前运行到这里,这样就能很方便的查看那个输出窗口。再通过“调试”|“继续”可以让程序继续运行,这样程序才结束~
公共语言运行库(Common Language Runtime,CLR)
“公共语言运行库”是 .NET Framework 中最重要的部分,也就是包含在 System 命名空间中的内容。其中包含了 C# 需要的基本数据类型的定义,一些基本的类和操作(比如上面的输出函数)以及其他各种高级功能。相比之下, .NET Framework 剩下的一些部分(比如 Microsoft 命名空间中的内容)就少得可怜(爆)。在以后的时候我们还会常常接触到这个词的~不过现在一般用不到~ 18/06/2006 应某位哥哥的要求开始写C#教程……寒~第一章 概述
第一节 C# 简介
§1:什么 C#
C# (念法是“C-Sharp”)是一种面向对象的高级编程语言。C# 语言起源于 C 语言家族(看名字也很像嘛~),因此熟悉 C/C++/Java 的程序员可以马上熟悉 C# 的语法和程序结构,学习起来是很快的。C# 的标准规定已经通过了国际标准组织的验收,具体的编号是 ECMA-334 和 ISO/IEC 23270。C# 现在的稳定版本有 1.2 版和 2.0 版。其中 2.0 版增加了一些新的功能。
§2:C# 的特点
和其他面向对象的语言相比,C# 有下面的更好的特点:
1、C# 提供面向对象组件(component-oriented)编程的支持。也就是说,C# 中的对象通过属性(Property)、方法(Method)、事件(event)和描述性元素(attribute)这些面向对象的特征来进行访问和控制,让数据的结构非常合理:需要使用的人可以很容易查看并且找到需要进行的操作,但又可以防止用户直接涉及一个对象的内部结构。
2、垃圾回收(Garbage collection)是一种非常强的功能,系统可以负责监视每一个大家创建的对象,并且程序在经过判断发现一个对象以后再也用不到了的时候就会自动清理掉,不像 C 和 C++ 里面大家要自己负责清理,这样可以减轻很多写程序的负荷。
3、异常处理(exception handling)提供了一种很规范的方法处理程序中出现的错误,包括出错的时候会产生一个标准的错误提示信息,也可以预先写好出错之后的处理方法。
4、类型安全(type-safe)保证系统在处理程序的时候可以预先就知道并且判断要进行的操作。因为所有用到对象的地方都是很明确的,所以就不会出现一个变量等到使用的时候才发现还没有初始化这样的问题,这样就可以避免一些莫名其妙的程序崩溃。
5、统一类型系统(unified type system)使所有的对象都可以统一的表示成为一种类型,并且用同样的方法储存和处理,在很多时候,需要用通用的方法处理各种不同的对象的时候就非常有用。
6、版本控制(versioning)可以在程序在更新的时候不发生异常。程序中只要有一个部分被更新过,运行的时候程序就能检测到,这样就可以阻止一些意外的更新让某种功能失效或者不正常工作。
补充的内容: 启动和运行 C# 语言的编译器 C# 的编译器中现在最好的是 Microsoft Visual Studio .NET。其中 1.2 版对应 Visual Studio .NET 2003,2.0 版对应 Visual Studio .NET 2005。Visual Studio .NET 有很多地方提供安装,其中包括 MSDN(微软的程序开发在线支持中心,如果是会员的话就可以免费下载)。如果大家只是要见识一下的话,可以下载免费的 Visual Studio. NET 2005 Express Edition,如果希望更强大(比如使用最好的 Team Suite 版本),那就需要大家自己想办法获得了哦~ 面向对象的编程:计算机处理的方式是一步一步的,也就是说,从原理上说我们要告诉计算机先做什么在做什么~这样计算机才最容易听懂,但是事实上这个方法太复杂了~而且有时候很难这样处理(比如说打开一个窗口很容易,但是我们不可能知道用电脑的人希望那个打开几个窗口)~这时候我们把窗口看成一个对象~那个人打开一个就多一个窗口对象~每个窗口对象之间互相不干扰,就能够解决这个问题了~ 对象:这个概念以后要作介绍~现在大概说明一下:在面向对象的编程中,所有的“东西”都看作一个一个对象的形式,一个对象有自己的特征数据(属性)和可以做的事情(方法),这些属性和方法对每个对象来说内容是不一样的,但是对同一个类型的对象来说,名称是一样的~(比如所有人都可以吃饭睡觉~都有身高体重~虽然他们吃饭睡觉的方法可能不一样~身高体重也不同)这样所有东西就能够用一个个对象的方式区分开来~ 方法、属性、事件:这些概念以后还要作介绍,现在大概得说明一下~一个对象(比如说樱桃~或者是某位哥哥姐姐)有一些特征的数据~比如说身高和体重~这些都是这个对象的属性;一个对象可以做某些事情,比如一个人可以吃饭和睡觉~这些是对象的方法;事件比较难说清楚~举个例子说~樱桃身上有一个移动检测器~那么樱桃移动一下~接受的人就能够收到一个“樱桃已经移动过了”的通知~如果爸爸妈妈要求移动的时候自动报告樱桃的位置~那么他们就可以不断地收到樱桃在哪里的消息~这样就可以很方便的防止樱桃被坏人带走了~(爆)在这里面樱桃的移动就是“事件”~一种不定期产生的事情~
说明~色彩定义以后没有特殊的话樱桃就不单独指出了~只在第一次的时候说明一下~另外所有特殊名词在解释过之后也就不再标注了~
色彩定义:章节 特殊名词 |
|
|