浅谈C#语言的语言结构

    类别:技术文档  贡献者:admin  总点击:2731  受欢迎度:10  更新日期:2014年03月03日
简介:浅谈C#语言的语言结构:在C#中类的声明与C++和Java很相似。但是,不象C++,C#结构体与类是不支持继承。但是,与Java相同的是,一个结构体可以实现接口(interface)。Java的关键字import已经被替换成using,它起到了同样的作用。.
  • 浅谈C#语言的语言结构

    类:在C#中类的声明与C++和Java很相似。但是,不象C++,C#结构体与类是不支持继承。但是,与Java相同的是,一个结构体可以实现接口(interface)。Java的关键字import已经被替换成using,它起到了同样的作用。
    类可以是抽象的和不可继承的:一个被申明成abstract的类不能被实例化,它只能被用做一个基类,C#关键字lock就像Java关键字final,它申明一个类不是抽象的,但是它也不能被用做另一个类的基类界面:就象在Java中一样,一个界面是一组方法集合的抽象定义。当一个类或结构体实现一个界面的时候,它必须实现这个界面中定义的所有方法。一个单一的类可以实现几个界面,也许以后会出现一些微妙的差别,但是这个特点看起来与Java相比没有变化。
    在Java中,一个接口是一组方法集合的抽象定义.当一个类或结构体实现一个接口的时候,它必须实现这个接口中定义的所有方法.一个单一的类可以实现几个接口.也许以后会出现一些微妙的差别,但是这个特点看起来与Java相比没有变化。布尔运算:条件表达式的结果是布尔数据类型,布尔数据类型是这种语言中独立的一种数据类型.从布尔类型到其他类型没有直接的转换过程.布尔常量true和false是C#中的关键字.错误处理:如Java中那样,通过抛出和捕捉异常对象来管理错误处理过程.内存管理:由底层.NET框架进行自动内存垃圾回收。
    布尔运算:条件表达式的结果是布尔数据类型,布尔数据类型是这种语言中独立的一种数据类型,从布尔类型到其他类型没有直接的转换过程,布尔常量true和false是C#中的关键字。错误处理:如Java中那样,通过抛出和捕捉异常对象来管理错误处理过程。[13]
    内存管理:由底层.NET框架进行自动内存垃圾回收。一个基本的C#类中包含数据成员、属性、构造器和方法。属性可以是静态或实例成员。
    接口:是其他类型为确保它们支持某些操作而实现的引用类型。接口从不直接创建而且没有实际的表示形式,其他类型必须转换为接口类型。
    一个接口定义一个协定。实现接口的类或结构必须遵守其协定。接口可以包含方法、属性、索引器和事件作为成员。
    强类型:C#是一个强类型的语言,它的数值类型有一些可以进行隐式转换,其他的必须显式转换,隐式转换的类型只能是长度短的类型转换成长的类型,int可以转换成long、float、double、decimal,反之必须显式的转换。
    编译:程序直接编译成标准的二进制可执行形式.但C#的源程序并不是被编译成二进制可执行形式,而是一种中间语言(IL),类似于JAVA字节码。如果前面的Hello World程序被保存成一个文本文件并被命名为Hello.cs,它将被编译成命名Hello.exe的可执行程序。
    C#程序不能直接编译成标准的二进制可执行形式,与 Java 类似,它被编译成为中间代码(Microsoft Intermediate Language),然后通过 .NET Framework 的虚拟机——被称之为通用语言执行层(Common Language Runtime, CLR)——执行。
    一个C#的结构体与C++的结构体是相似的,因为它能够包含数据声明和方法.但是,不象C++,C#结构体与类是不同的而且不支持继承.但是,与Java相同的是,一个结构体可以实现接口。
    预编译:C# 中存在预编译指令支持条件编译,警告,错误报告和编译行控制.可用的预编译指令有:#define,#undef,#if,#elif,#else,#endif,#warning,#error,#line。[15]
    没有了#include伪指令,无法再用#define 语句对符号赋值,所以就不存在源代码替换的概念--这些符号只能用在#if和#elif伪指令里.在#line伪指令里的数字(和可选的名字)能够修改行号还有#warning和#error输出结果的文件名。[16]
    操作符重载:一些操作符能够被重载,而另一些则不能.特别的是,没有一个赋值运算符能够被重载.能够被重载的单目操作符是:+ - ! ~ ++ -- true false 能够被重载的二元运算符是:+、 - 、*、 /、 %、 &、 |、 ^、 << 、>>、 ==、 !=、 >、 < 、>= 、<=。[17]
    类型:C# 中的类型一共分为两类,一类是值类型(Value Type),一类是引用类型(Reference Type)。值类型和引用类型是以它们在计算机内存中是如何被分配的来划分的。值类型包括 结构和枚举,引用类型包括类、接口、委托 等。还有一种特殊的值类型,称为简单类型(Simple Type),比如 byte,int等,这些简单类型实际上是FCL类库类型的别名,比如声明一个int类型,实际上是声明一个System. Int32结构类型。因此,在 Int32类型中定义的操作,都可以应用在int类型上,比如 “123.Equals(2)”。
    所有的值类型都隐式地继承自System.ValueType类型(注意System.ValueType本身是一个类类型),System.ValueType和所有的引用类型都 继承自 System.Object基类。不能显式地让结构继承一个类,因为C#不支持多重继承,而结构已经隐式继承自ValueType。
    NOTE:堆栈(stack)是一种后进先出的数据结构,在内存中,变量会被分配在堆栈上来进行操作。堆(heap)是用于为类型实例(对象)分配空间的内存区域,在堆上创建一个对象,会将对象的地址传给堆栈上的变量(反过来叫变量指向此对象,或者变量引用此对象)。
    中间代码:微软在用户选择何时MSIL应该编译成机器码的时候是留了很大的余地.微软公司很小心的声称MSIL不是解释性的,而是被编译成了机器码.它也明白许多--如果不是大多数的话--程序员认为Java程序要不可避免的比C编写的任何东西都要慢.而这种实现方式决定了基于MSIL的程序(指的是用C#,Visual Basic,"Managed C++"--C++的一个符合CLS的版本--等语言编写的程序)将在性能上超过"解释性的"Java代码.当然,这一点还需要得到事实证明,因为C#和其他生成MSIL的编译器还没有发布.但是Java JIT编译器的普遍存在使得Java和C#在性能上相对相同.象"C#是编译语言而Java是解释性的,"之类的声明只是商业技巧.Java的中间代码和MSIL都是中间的汇编形式的语言,它们在运行时或其它的时候被编译成机器代码。
    做网页(zuowangye.com)

    补充本知识点暨快乐评论此文章:'浅谈C#语言的语言结构.'

文章标签:C#语言 
踩下去0
顶上来0
复制本页网址,与你QQ/MSN上的好友分享  温馨提示:如果您喜欢本站,请把她推荐给您的朋友们!
现在有0人对本文发表评论。  »马上发布评论
现在有0人对本文发表评论。  »查看所有评论
您的姓名: * 可选项,留空即为匿名发表
评论内容:
剩余字数:  * 按 Ctrl + Enter 直接发送.
           »»我要分享做网页知识
相关文章推荐
网友阅读排行
技术文档
本站会员贡献
合作伙伴: 百度站长平台 新浪读书频道 CSDN.Net YPState R灯具集 好搜站长平台 商录 全球网站推广库 搜狗站长平台 网页百科 更多» >>加入本站作者团
首页 | 关于我们 | 网站地图 | 合作伙伴 | 部分作者 | 会员注册 友情链接 | 联系方式 |
2004-2019 做网页学习网 鄂公网安备 42010402000280号 鄂ICP备13003030号