C# 类的深入指南

简介: C# 类的深入指南

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#编程中更加得心应手。

目录
相关文章
|
2月前
|
C#
C#学习相关系列之数据类型类的三大特性(二)
C#学习相关系列之数据类型类的三大特性(二)
|
2月前
|
C#
58.c#:directory类
58.c#:directory类
92 0
|
2月前
|
C#
57.c#:directorylnfo类
57.c#:directorylnfo类
24 0
|
2天前
|
开发框架 .NET 编译器
程序与技术分享:C#基础知识梳理系列三:C#类成员:常量、字段、属性
程序与技术分享:C#基础知识梳理系列三:C#类成员:常量、字段、属性
|
19天前
|
C#
C# 版本的 计时器类 精确到微秒 秒后保留一位小数 支持年月日时分秒带单位的输出
这篇2010年的文章是从别处搬运过来的,主要包含一个C#类`TimeCount`,该类有多个方法用于处理时间相关的计算。例如,`GetMaxYearCount`计算以毫秒为单位的最大年数,`GetCurrentTimeByMiliSec`将当前时间转换为毫秒,还有`SecondsToYYMMDDhhmmss`将秒数转换为年月日时分秒的字符串。此外,类中还包括一些辅助方法,如处理小数点后保留一位数字的`RemainOneFigureAfterDot`。
|
2月前
|
C#
C#的类和对象的概念学习案例刨析
【5月更文挑战第17天】C#是一种面向对象的语言,以类和对象为核心。类作为对象的模板,定义了属性(如Name, Age)和行为(如Greet)。对象是类的实例,可设置属性值。封装通过访问修饰符隐藏实现细节,如Customer类的私有name字段通过Name属性访问。继承允许新类(如Employee)从现有类(Person)继承并扩展。多态让不同对象(如Circle, Square)共享相同接口(Shape),实现抽象方法Area,提供灵活的代码设计。
47 1
|
2月前
|
SQL 存储 Oracle
C# Web控件与数据感应之 Control 类
C# Web控件与数据感应之 Control 类
|
2月前
|
SQL 存储 C#
C# Web控件与数据感应之 TreeView 类
C# Web控件与数据感应之 TreeView 类
|
2月前
|
SQL 存储 Oracle
C# Web控件与数据感应之 CheckBoxList 类
C# Web控件与数据感应之 CheckBoxList 类
|
2月前
|
SQL 存储 Oracle
C# Web控件与数据感应之 ListControl 类
C# Web控件与数据感应之 ListControl 类