### C#语法/语言规范版本4.0 #### 一、简介 C#是一种现代、面向对象且类型安全的编程语言。它结合了C、C++的强大功能与Visual Basic的简单易用,使得开发人员能够高效地编写各种类型的应用程序。 ##### 1.1 HelloWorld 在C#中创建一个简单的“Hello World”程序是非常直观的: ```csharp using System; class Program { static void Main() { Console.WriteLine("Hello World!"); } } ``` 这段代码展示了C#的基本结构:`using`指令引入命名空间;`class`定义了一个类;`static void Main()`是程序的入口点;`Console.WriteLine`用于输出文本。 ##### 1.2 程序结构 C#程序通常由多个命名空间组成,每个命名空间包含一个或多个类。类中包含了成员,如字段、方法等。一个完整的C#程序示例如下: ```csharp namespace MyNamespace { class MyClass { public void MyMethod() { // 方法体 } } } ``` 命名空间提供了一种组织代码的方式,避免命名冲突。 ##### 1.3 类型和变量 C#支持多种数据类型,包括数值类型、字符串、布尔值等。变量的声明如下: ```csharp int myInt = 10; // 整型 double myDouble = 3.14; // 浮点型 string myString = "Hello"; // 字符串 bool myBool = true; // 布尔型 ``` ##### 1.4 表达式 表达式是由操作符和操作数组成的组合。例如,算术表达式: ```csharp int x = 5 + 3 * 2; ``` 在上面的例子中,`*`和`+`是操作符,而数字5、3和2是操作数。 ##### 1.5 语句 语句是构成程序逻辑的基本单位。常见的语句包括赋值语句、流程控制语句(如if-else)等。 ```csharp int x = 10; // 赋值语句 if (x > 5) { // 条件语句 Console.WriteLine("x is greater than 5"); } ``` ##### 1.6 类和对象 类是面向对象编程的基础,它定义了对象的行为和状态。 ###### 1.6.1 成员 类的成员可以是字段、方法、属性等。 ```csharp public class MyClass { public int MyField; // 字段 public void MyMethod() { } // 方法 public int MyProperty { get; set; } // 属性 } ``` ###### 1.6.2 可访问性 C#提供了不同的访问修饰符来控制成员的可见性,如`public`、`private`、`protected`等。 ```csharp public class MyClass { private int _myPrivateField; protected int _myProtectedField; public int MyPublicField; } ``` ###### 1.6.3 类型参数 泛型允许创建具有类型参数的类或方法,这些类型参数可以在运行时指定具体的类型。 ```csharp public class MyGenericClass<T> { private T _value; } ``` ###### 1.6.4 基类 C#支持单一继承,子类可以从父类继承成员。 ```csharp public class MyBaseClass { public virtual void MyMethod() { } } public class MyDerivedClass : MyBaseClass { public override void MyMethod() { } } ``` ###### 1.6.5 字段 字段用于存储数据。 ```csharp public class MyClass { public int MyField; } ``` ###### 1.6.6 方法 方法是实现功能的代码块。 ###### 1.6.6.1 参数 方法可以接受零个或多个参数。 ```csharp public void MyMethod(int param) { } ``` ###### 1.6.6.2 方法体和局部变量 方法体内可以包含局部变量。 ```csharp public void MyMethod() { int localVar = 10; } ``` ###### 1.6.6.3 静态方法和实例方法 静态方法不依赖于类的实例,可以直接通过类名调用。 ```csharp public class MyClass { public static void MyStaticMethod() { } public void MyInstanceMethod() { } } ``` ###### 1.6.6.4 虚方法、重写方法和抽象方法 虚方法可以被子类覆盖。 ```csharp public class MyBaseClass { public virtual void MyMethod() { } } public class MyDerivedClass : MyBaseClass { public override void MyMethod() { } } ``` 抽象方法必须在派生类中实现。 ```csharp public abstract class MyBaseClass { public abstract void MyMethod(); } public class MyDerivedClass : MyBaseClass { public override void MyMethod() { } } ``` ###### 1.6.6.5 方法重载 方法可以通过参数列表的不同来实现重载。 ```csharp public class MyClass { public void MyMethod(int arg) { } public void MyMethod(string arg) { } } ``` ###### 1.6.7 其他函数成员 除了方法之外,类还可以包含其他类型的成员,如构造函数、属性、索引器、事件和运算符。 ###### 1.6.7.1 构造函数 构造函数用于初始化新创建的对象。 ```csharp public class MyClass { public MyClass() { } } ``` ###### 1.6.7.2 属性 属性提供了一种访问私有字段的简便方式。 ```csharp public class MyClass { private string _myPrivateField; public string MyProperty { get { return _myPrivateField; } set { _myPrivateField = value; } } } ``` ###### 1.6.7.3 索引器 索引器允许类像数组一样被索引。 ```csharp public class MyClass { private int[] _myArray; public int this[int index] { get { return _myArray[index]; } set { _myArray[index] = value; } } } ``` ###### 1.6.7.4 事件 事件允许类向其他对象发送通知。 ```csharp public class MyClass { public event EventHandler MyEvent; protected virtual void OnMyEvent(EventArgs e) { MyEvent?.Invoke(this, e); } } ``` ###### 1.6.7.5 运算符 自定义运算符可以扩展类的行为。 ```csharp public class MyClass { public static MyClass operator +(MyClass left, MyClass right) { // 实现 } } ``` ###### 1.6.7.6 析构函数 析构函数在对象被垃圾回收之前调用。 ```csharp public class MyClass { ~MyClass() { // 清理资源 } } ``` ##### 1.7 结构 结构是一种值类型,用于封装一组相关数据和方法。 ```csharp public struct MyStruct { public int X; public int Y; } ``` ##### 1.8 数组 数组是一系列相同类型的元素的集合。 ```csharp int[] myIntArray = new int[5]; ``` ##### 1.9 接口 接口定义了一组方法和属性的签名,但不提供实现。 ```csharp public interface IMyInterface { void MyMethod(); } ``` ##### 1.10 枚举 枚举提供了一组命名的常量。 ```csharp public enum MyEnum { Value1, Value2 } ``` ##### 1.11 委托 委托可以被看作是指向方法的引用。 ```csharp public delegate void MyDelegate(); ``` ##### 1.12 特性 特性提供了一种向类添加元数据的方法。 ```csharp [AttributeUsage(AttributeTargets.Class)] public class MyAttribute : Attribute { public string Name { get; set; } } [My(Name = "MyClass")] public class MyClass { } ``` 以上内容涵盖了C#语言规范版本4.0中的主要知识点,包括基础概念、类型、变量等方面,旨在帮助开发者理解和掌握C#的核心要素。
- 粉丝: 11
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助