📜  类 c# (1)

📅  最后修改于: 2023-12-03 15:27:26.804000             🧑  作者: Mango

类 C#

C# 是一种面向对象的编程语言,通过类的概念封装数据和方法,并进行抽象,从而实现代码的复用和灵活性。一个类可以看作是一种自定义的数据类型,其中包含了属性和方法。

类的基本语法
类的定义
public class MyClass
{
    // fields, properties, methods, etc.
}

类的定义使用 class 关键字。类名一般采用 PascalCase 格式,表示每个单词的首字母大写。类的定义语法可以包含字段、属性、方法等。

类的访问修饰符和成员访问修饰符

类的访问修饰符和成员访问修饰符可以用来指定类及其成员在程序中可见的范围。C# 中常用的访问修饰符有以下几种:

  • public:公共的,任何地方都可以访问。
  • private:私有的,只有类内部可以访问。
  • protected:受保护的,只有类内部和派生类中可以访问。
  • internal:内部的,只有同一程序集内的代码可以访问。
  • protected internal:受保护的内部的,只有同一程序集内及派生类中可以访问。
public class MyClass
{
    public int publicField;           // 公共字段
    private int privateField;         // 私有字段
    protected int protectedField;     // 受保护字段
    internal int internalField;       // 内部字段
    protected internal int protInternalField; // 受保护的内部字段

    public void PublicMethod(){}      // 公共方法
    private void PrivateMethod(){}    // 私有方法
    protected void ProtectedMethod(){}// 受保护方法
    internal void InternalMethod(){}  // 内部方法
    protected internal void ProtInternalMethod(){} // 受保护的内部方法
}
类的继承

C# 中,一个类可以继承另一个类的成员,从而减少代码重复和提高代码的复用性。子类可以访问父类中的 publicprotected 成员,但不能访问父类中的 private 成员。

public class MyBaseClass
{
    public void PublicMethod(){}
    protected void ProtectedMethod(){}
    private void PrivateMethod(){}
}

public class MySubClass : MyBaseClass
{
    public void AnotherPublicMethod()
    {
        PublicMethod();      // 调用父类的公共方法
        ProtectedMethod();   // 调用父类的受保护方法
        // PrivateMethod();  // 错误,不能调用父类的私有方法
    }
}
类的实例化

一个类的实例可以通过 new 关键字来创建。

MyClass myObject = new MyClass();
类的成员
字段

类的字段是类中用于存储数据的变量。字段可以被初始化并包含默认值。字段可以是公共的、私有的、受保护的等。

public class MyClass
{
    public string myPublicField = "public field";     // 公共字段
    private int myPrivateField = 42;                  // 私有字段
    protected string myProtectedField = "protected field";    // 受保护字段
    internal float myInternalField = 3.14f;           // 内部字段
    protected internal double myProtInternalField = 2.71;     // 受保护的内部字段
}
属性

属性是一种对字段的封装,用于控制类外部对字段的访问。通过属性可以为字段提供 get 和 set 方法,从而可以在设置和获取字段时进行一些处理操作。

public class MyClass
{
    private int myValue;

    public int MyValue
    {
        get { return myValue; }
        set { myValue = value; }
    }
}

上面的代码中,MyValue 属性提供了对 myValue 字段的访问,get 和 set 方法分别用于获取和设置属性值。

方法

类的方法是类中用于操作数据的函数。方法可以通过参数传递数据,也可以返回数据。

public class MyClass
{
    public void DoSomething(){}
    public void DoSomethingWithParam(int value){}
    public int DoSomethingWithReturnValue(){ return 0; }
    public int DoSomethingWithParamAndReturnValue(int value){ return value + 1; }
}
索引器

索引器允许一个对象通过使用下标访问类的元素。索引器看起来像是一个带有参数的属性。

public class MyClass
{
    private string[] myArray = new string[10];

    public string this[int index]
    {
        get { return myArray[index]; }
        set { myArray[index] = value; }
    }
}

上面的代码中,this[int index] 表示索引器,用于访问 myArray 数组的元素。

构造函数

构造函数是一种特殊的方法,用于在实例化时为对象分配内存,并执行一些初始化代码。构造函数没有返回值类型,并且其名称必须与类名相同。

public class MyClass
{
    public MyClass(){}
    public MyClass(string str){}
    public MyClass(int val, string str){}
}
静态成员

静态成员是类的成员,其属于整个类而不是实例。静态成员可以用来存储一些类共享的数据,如计数器等。

public class MyClass
{
    private static int counter;

    public MyClass()
    {
        counter++;
    }

    public static int GetCounter()
    {
        return counter;
    }
}

上面的代码中,counter 是一个静态字段,用于统计 MyClass 类的实例个数。GetCounter 是一个静态方法,用于获取实例个数。

总结

类是面向对象编程中的基本概念,用于封装数据和方法。本文介绍了 C# 中类的语法和各种成员的定义和使用,包括字段、属性、方法、索引器、构造函数和静态成员等。