C#编程:理解静态与非静态成员、关键字详解

5星 · 超过95%的资源 需积分: 9 4 下载量 58 浏览量 更新于2024-11-06 收藏 6KB TXT 举报
该资源是一份关于C#面向对象编程的基础教程,主要讲解了静态成员与非静态成员、const和static readonly的区别、extern关键字的作用、abstract关键字的意义、internal修饰符的功能、sealed修饰符的用途以及override和overload的区别。通过示例代码详细阐述了这些概念。 1. 静态成员与非静态成员 在C#中,静态成员(static)属于类本身,而不属于类的实例。这意味着它们是共享的,不依赖于任何特定的对象存在。静态成员可以通过类名直接访问,无需创建对象。而非静态成员(非static)是属于类的每个实例的,每个实例都有自己的一份副本。例如,在`Employee`类中,`Salary`是静态成员,而`Name`是非静态成员。 ```csharp public static decimal Salary; // 静态成员,所有实例共享 public string Name; // 非静态成员,每个实例有自己的副本 ``` 2. const与static readonly的区别 `const`关键字用于声明常量,它的值在编译时必须确定,并且在程序运行期间不能改变。`static readonly`则是在编译时初始化,但可以在运行时赋值。一旦赋值,同样不能更改。`const`是常量,而`readonly`是只读字段。 3. extern关键字 extern关键字用于引入外部定义的函数或方法,通常与C/C++库交互时使用。它告诉编译器函数的实现不在当前文件中,而是在其他地方。 4. abstract关键字 抽象(abstract)用于定义抽象类和抽象方法。抽象类不能被实例化,只能作为其他类的基类。抽象方法没有实现,需要在派生类中提供具体实现。 5. internal修饰符 internal修饰符用于限制类或成员的可见性,使其仅限于同一程序集内的访问。它是默认的访问修饰符,若无其他指定,类和成员默认为internal。 6. sealed修饰符 sealed修饰符用于阻止类被继承。当一个类被密封后,其他类无法派生自这个类。这可以用于确保类的封闭性和防止意外修改。 7. override与overload的区别 `override`用于重写基类的方法,保持相同的签名,以便在派生类中提供不同的实现。`overload`(重载)则是创建多个具有相同名称但参数列表不同的方法,这是多态的一种形式。 示例代码展示了如何使用这些概念: ```csharp class Employee { public static decimal Salary; // 静态成员 public string Name; // 非静态成员 public static void SetSalary(decimal B) // 静态方法 { Salary = B; } public voidSetName(string N) // 非静态方法 { Name = N; } } class Sample { public static void Main() { Employee.Salary = 500.0m; // 访问静态成员 Employee.SetSalary(500.0m); // 调用静态方法 Employee e = new Employee(); // 创建实例 e.Name = ""; // 访问非静态成员 e.SetName(""); // 调用非静态方法 } } ``` 这个例子演示了如何通过类名直接访问静态成员和方法,以及如何通过实例访问非静态成员和方法。通过这些基础概念,开发者可以更好地理解和使用C#面向对象编程特性。