WordPress 中文文档
C Sharp
From WordPress Chinese
C#(发音为C Sharp)是由微软公司所开发的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。
目录 |
[编辑]
语言特性
相对于C和[[C++]],这个语言在许多方面进行了限制和增强:
- 指针只能被用于不安全模式。大多数对象访问通过安全的引用实现,以避免无效的调用,并且有许多算法用于验证溢出,指针只能用于调用值类型,以及受垃圾回收器控制的托管对象。
- 对象不能被显式释放,代替为当不存在被引用时通过垃圾回收器回收。
- 只允许单重继承,但是一个类可以实现多个接口。
- C#比C++更加类型安全。默认的安全转换是隐式转换,例如加宽整型和从派生类转换为基类。而布尔型同整型,及枚举型同整型不允许隐式转换,非空指针(通过引用相似对象)同用户定义类型的隐式转换必段被显式的确定,不同于C++的复制构造函数。
- 数组声明语法不同("int[] a = new int[5]" 而不是 "int a[5]")。
- 枚举位于其所在的名字空间中。
- C#中没有模版,但是在C# 2.0中引入了泛型,并且支持一些C++模版不支持的特性。比如泛型参数中的类型约束。另一方面,表达式不能像C++模版中被用于类型参数。
- 属性支持,使用类似访问成员的方式调用。
- 完整的反射支持。
[编辑]
C# 2.0 新特性
在C# 2.0中的新特性有:
[编辑]
C# 3.0 新特性
- Lamda 表达法(Lambda expressions)
- 匿名变量
- 扩展方法(Extension methods)
- 匿名型别(Anonymous types)
- Linq 查询
- 表达式树(Expression Trees)
[编辑]
程序的执行
C#并不被编译成为能够直接在计算机上执行的二进制本地代码。与Java类似,它被编译成为中间代码,然后通过.NET Framework的虚拟机——被称之为通用语言运行时(CLR)——执行。
所有的.Net编程语言都被编译成这种被称为MSIL(Microsoft Intermediate Language )的中间代码。因此虽然最终的程序在表面上仍然与传统意义上的可执行文件都具有“.exe”的后缀名。但是实际上,如果计算机上没有安装.Net Framework,那么这些程序将不能够被执行。
在程序执行时,.Net Framework将中间代码翻译成为二进制机器码,从而使它得到正确的运行。最终的二进制代码被存储在一个缓冲区中。所以一旦程序使用了相同的代码,那么将会调用缓冲区中的版本。这样如果一个.Net程序第二次被运行,那么这种翻译不需要进行第二次,速度明显加快。
[编辑]
标准化
微软公司已经向ECMA申请将C#作为一种标准。在2001年12月,ECMA发布了ECMA-334 C#语言规范。C#在2003年成为一个ISO标准(ISO/IEC 23270)。现在有一些独立的实现正在进行,包括:
[编辑]
C#的Hello World程序
下面是一个在标准输出设备上输出Hello World的简单程序,这种程序通常作为开始学习编程语言时的第一个程序:
class HelloWorld
{
public static void Main()
{
System.Console.WriteLine("Hello, world!");
}
}
[编辑]
参见
[编辑]
外部链接
- C# Language Specification (MSDN) (英文)
- ECMA-334 C# Language Specification (.pdf) (英文)
- ISO/IEC 23270:2003 C# Language Specification (英文)
- Visual C# .NET 入门 (MSDN)
- MCS: Mono C# 编译器
- Portable.NET
- DotGNU 计划 - 自由的 .NET 兼容平台
- SharpDevelop: 开源的 C# IDE
| Template:Ed | 程序设计语言 | |
| A+ | Ada | Algol | APL | ActionScript | ASP | ASP.NET | 汇编语言 | B | BASIC | Brainfuck | C | C++ | C++/CLI | C# | Cg | COBOL | ColdFusion | Delphi | Eiffel | Erlang | Forth | FORTRAN | F# | Haskell | J | J# | Java | JavaScript | JScript | JSP | Jython | LISP | LOGO | Lua | Mesa | ML | Modula-2 | Oberon | Objective-C | Ocaml | Pascal | Perl | PHP | PL/I | PostScript | Powerbuilder | Prolog | Python | QBASIC | REXX | Ruby | Scheme | Self | Smalltalk | SQL | Tcl/Tk | VBScript | Visual Basic | Visual Basic .NET | | ||
