C#编程:理解静态与非静态成员、关键字详解
5星 · 超过95%的资源 需积分: 9 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#面向对象编程特性。
2018-11-29 上传
2021-12-22 上传
2021-01-20 上传
2009-06-03 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
binge527533052
- 粉丝: 2
- 资源: 30
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍