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