C# 类(Class)

类就像特定对象的蓝图。在现实世界中,每个对象都有一些颜色,形状和功能-例如,豪华跑车法拉利。法拉利是豪华车类型的对象。豪华车是一门表明某些特性的类,例如速度,颜色,形状,内饰等。因此,制造满足这些要求的汽车的任何公司都是豪华车类型的对象。例如,宝马,兰博基尼,凯迪拉克的每辆汽车都是“豪华车”类的对象。在这里,“豪华车”是一类,每一辆实物汽车都是豪华车类的对象。

同样,在面向对象的程序设计中,类定义了一些属性,字段,事件,方法等。类定义了数据的种类及其对象将具有的功能。

类使您可以通过对其他类型,方法和事件的变量进行分组来创建自定义类型。

在C#中,可以使用 class 关键字定义一个类。

public class MyClass
{
    public string  myField = string.Empty;

    public MyClass()
    {
    }

    public void MyMethod(int parameter1, string parameter2)
    {
        Console.WriteLine("First Parameter {0}, second parameter {1}", parameter1, parameter2);
    }

    public int MyAutoImplementedProperty { get; set; }

    private int myPropertyVar;
    
    public int MyProperty
    {
        get { return myPropertyVar; }
        set { myPropertyVar = value; }
    } 
}

下图显示了C#类的重要构建块。

C#类

C#访问修饰符

访问修饰符应用于类,方法,属性,字段和其他成员的声明。它们定义了类及其成员的可访问性。公共,私有,受保护和内部是C#中的访问修饰符。我们将在关键字部分中对此进行了解。

C# 字段

该字段是一个具有值的类级变量。通常,字段成员应具有私有访问修饰符并与属性一起使用。

C#构造函数

一个类可以具有参数化或无参数的构造函数。创建类的实例时,将调用构造函数。可以使用访问修饰符和类名称来定义构造函数:

<access modifiers> <class name>(){  }
class MyClass
{
    public MyClass()
    {

    }
}

C#方法

可以使用以下模板定义方法:

{access modifier} {return type} MethodName({parameterType parameterName})
public void MyMethod(int parameter1, string parameter2)
{
    // 在此处编写您的方法代码。 

}

属性

可以使用getter和setter定义属性,如下所示:

private int _myPropertyVar;

public int MyProperty
{
    get { return _myPropertyVar; }
    set { _myPropertyVar = value; }
}

属性封装了一个私有字段。它提供了getters(get {})来检索基础字段的值,并提供setters(set {})来设置基础字段的值。在上面的示例中,_myPropertyVar是一个私有字段,无法直接访问。只能通过MyProperty访问。因此,MyProperty封装了_myPropertyVar。

您还可以在get和set中应用一些其他逻辑,如以下示例所示。

private int _myPropertyVar;

public int MyProperty
{
    get {
        return _myPropertyVar / 2;
    }

    set {
        if (value > 100)
            _myPropertyVar = 100;
        else
            _myPropertyVar = value; ;
    }
}

自动实现属性

从C#3.0开始,如果您不想在get或set中应用某些逻辑,则可以轻松进行属性声明。

以下是自动实现的属性的示例:

public int MyAutoImplementedProperty { get; set; }

请注意,上述属性示例中没有私有后备字段。支持字段将由编译器自动创建。您可以像使用类的常规属性一样使用自动化属性。当属性访问器中不需要其他逻辑时,自动实现的属性只是为了轻松声明属性。

命名空间

命名空间是一组相关类和命名空间的容器。命名空间还用于为命名空间名称内的类提供唯一的名称。命名空间和类使用点(.)表示。

在C#中,可以使用 namespace 关键字定义命名空间。

namespace CSharpTutorials
{
    class MyClass
    {

    }
}

在上面的示例中,MyClass的完全限定类名是 CSharpTutorials.MyClass.

命名空间可以包含其他命名空间。内部命名空间可以使用(.)分隔。

namespace CSharpTutorials.Examples
{
    class MyClassExample
    {

    }
}

在上面的示例中,MyClassExample 的完全限定的类名称为 CSharpTutorials.Examples.MyClassExample。