C#中的类是面向对象编程的核心概念之一。本篇博客将详细介绍C#类中的字段、常量、方法、构造器、对象初始化器、this
引用、属性、索引器、静态构造器、静态类、终结器以及类特性和修饰符。
类的字段
字段是类或结构体中存储数据的成员。
public class Person { public string Name; private int age; }
字段修饰符:
static
: 静态字段属于类,而非类的实例。- 访问权限修饰符:
public
,internal
,private
,protected
- 继承修饰符:
new
- 不安全代码修饰符:
unsafe
- 只读修饰符:
readonly
- 线程访问修饰符:
volatile
类的常量
常量是固定值,在编译时就已经确定。
public class Constants { public const double Pi = 3.14159; }
类的方法
方法用于执行动作或返回值。
public class Calculator { public int Add(int a, int b) { return a + b; } }
方法修饰符:
static
: 静态方法可以在不创建类的实例的情况下调用。- 访问权限修饰符:
public
,internal
,private
,protected
- 继承修饰符:
new
,virtual
,abstract
,override
,sealed
- 分部方法修饰符:
partial
- 非托管代码修饰符:
unsafe
,extern
- 异步代码修饰符:
async
实例构造器
实例构造器用于初始化类的新实例。
public class Car { public string Model; public Car(string model) { Model = model; } }
对象初始化器
对象初始化器允许在创建对象时设置字段或属性。
var car = new Car { Model = "Tesla" };
this引用
this
关键字引用当前类的实例。
public class Circle { public float Radius { get; set; } public float Diameter { get { return Radius * 2f; } set { Radius = value / 2f; } } public Circle(float radius) { this.Radius = radius; // 使用this来区分字段和参数 } }
属性
属性提供了访问和设置字段的受控方式。
public class Product { private decimal _currentPrice; public decimal CurrentPrice { get { return _currentPrice; } set { _currentPrice = value; } } }
索引器
索引器允许通过索引访问类的成员,类似于数组。
public class List<T> { private T[] _items = new T[10]; public T this[int index] { get { return _items[index]; } set { _items[index] = value; } } }
静态构造器
静态构造器是一种特殊的方法,用于初始化类的静态成员。
public class Database { private static readonly string ConnectionString; static Database() { // 初始化逻辑 ConnectionString = "Server=myServer; Database=myDB;"; } }
静态类
静态类是一种只能包含静态成员的类,不能被实例化。
public static class MathUtils { public static int Add(int a, int b) => a + b; }
终结器
终结器类似于析构函数,用于释放对象占用的资源。
public class ResourceHandler : IDisposable { public void Dispose() { // 清理资源 } ~ResourceHandler() { Dispose(); } }
类特性
类特性提供了关于类的元数据。
[Serializable] public class MyClass { // 类定义 }
类修饰符
public
: 类可以被任何其他类访问。internal
: 类只能在当前程序集内部访问。abstract
: 抽象类不能被实例化,通常作为其他类的基类。sealed
: 防止类被继承。static
: 静态类不能被实例化,并且只能包含静态成员。unsafe
: 允许类中使用不安全代码。partial
: 允许类的定义分散在多个文件中。
表达式体方法
表达式体方法是一种简写的Lambda表达式,使用胖箭头=>
。
public class Greeting { public static string GetMessage(string name) => $"Hello, {name}!"; }
方法重载
方法重载允许类中有多个同名方法,只要它们的参数列表不同。
public class Calculator { public int Add(int a, int b) => a + b; public int Add(int a, int b, int c) => a + b + c; }
部方法
部方法允许在一个方法中定义另一个方法。
public partial class PartialClass { partial void Execute(); } public partial class PartialClass { void Execute() { // 实现细节 } }
重载构造器
构造器可以被重载,以提供多种初始化对象的方式。
public class Person { public string Name { get; set; } public Person() { } public Person(string name) { Name = name; } }
解构器
解构器允许将对象的字段反向赋值给变量。
public class Person { public string FirstName { get; set; } public string LastName { get; set; } public void Deconstruct(out string firstName, out string lastName) { firstName = FirstName; lastName = LastName; } }
通过本篇博客,你应该对C#中的类及其成员有了更深入的理解。类是构建面向对象程序的基石,合理使用这些特性可以使代码更加灵活和强大。希望这些知识点能帮助你在C#编程中更加得心应手。