C# 类和对象

本文关键字:对象 | 更新日期: 2023-09-12 17:37:49

类就像具有某些属性和功能的特定对象的蓝图。 例如,汽车应该具有一些属性,例如四个轮子、两个或更多门、转向系统、挡风玻璃等。 它还应该具有一些功能,例如启动,停止,运行,移动等。 现在,任何具有这些属性和功能的对象都是汽车。 在这里,汽车是一个定义一些特定属性和功能的类。每辆汽车都是汽车类的对象。 你可以说你拥有的汽车是汽车类的对象。

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

定义类

在 C# 中,可以使用 class 关键字定义类。 让我们定义一个名为"学生"的类。

Example: Define a Class

class Student
{
    
}

类可以包含一个或多个构造函数、字段、方法、属性、委托和事件。它们称为类成员。 类及其成员可以具有访问修饰符(如公共、私有、受保护和内部),以限制来自程序其他部分的访问。

让我们向Student类添加不同的成员。

field

一个类可以有一个或多个字段。它是一个类级变量,它包含一个值。通常,字段成员应具有与属性一起使用的专用访问修饰符。

Example: Field

class Student
{
    public int id;
}

Property

属性使用资源库和 getter 封装私有字段,以分配和检索基础字段值。

Example: Property

class Student
{
    private int id;
    public int StudentId
    {
        get { return id; }
        set { id = value; }
    }
}

在上面的示例中,id是无法直接访问的私有字段。只能使用 StudentId 属性访问它。 get{ }返回基础字段的值,set{ }将值分配给基础字段id

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

Example: Property in C#

private int id;
public int StudentId
{
    get { return id; }
    set {
        if (value > 0)
            id = value;
    }
}

自动实现的属性

从 C# 3.0 开始,如果您不想在 getter 或 setter 中应用某些逻辑,则属性声明变得容易。使用自动实现的属性,无需声明基础私有字段。 C# 编译器将在 IL 代码中自动创建它。

Example: Auto-implemented Property

class Student
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

在上面的示例中,编译器将在内部创建FirstNameLastName的后备私有字段。这加快了开发时间和代码可读性。

Method

方法可以包含一个或多个要作为单个单元执行的语句。方法可能会也可能不会返回值。方法可以有一个或多个输入参数。

Syntax

[access-modifier] return-type MethodName(type parameterName1, type parameterName2,...)
{
    
}

下面定义返回两个数字之和的 Sum 方法。

Example: C# Method

public int Sum(int num1, int num2)
{
    var total = num1 + num2;
    
    return total;
}

以下方法不返回任何内容,也没有任何参数。返回类型为 void

Example: C# Method

public void Greet()
{
    Console.Write("Hello World!");
}

下面定义 Student 类中的 GetFullName() 方法。

Example: Method

class Student
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string GetFullName()
    {
        return FirstName + " " + LastName;
    }
}

构造函数

构造函数是一种特殊类型的方法,将在创建类的实例时自动调用。 构造函数是通过使用访问修饰符和类名<access-modifier> <class-name>(){ }定义的。

Example: Constructor

class Student
{
    public Student()
    {
        //constructor
    }
}

  • 构造函数名称必须与类名相同。
  • 构造函数可以是公共的、私有的或受保护的。
  • 构造函数不能返回任何值,因此不能有返回类型。
  • 一个类可以有多个具有不同参数的构造函数,但只能有一个无参数构造函数。
  • 如果未定义构造函数,C# 编译器将在内部创建它。

类的对象

可以创建类的一个或多个对象。每个对象可以具有不同的属性和字段值,但方法和事件的行为相同。

在 C# 中,可以使用 new 关键字创建类的对象,并将该对象分配给类类型的变量。 例如,下面创建 Student 类的对象,并将其分配给 Student 类型的变量。

Example: Create an Object of a Class

Student mystudent = new Student();

现在,您可以使用object.MemberName表示法访问类的公共成员。

Example: Access Members of a Class

Student mystudent = new Student();
mystudent.FirstName = "Steve";
mystudent.LastName = "Jobs";
mystudent.GetFullName();

您可以创建具有不同属性和字段值的类的多个对象。

Example: Create Multiple Objects of a Class

Student mystudent1 = new Student();
mystudent1.FirstName = "Steve";
mystudent1.LastName = "Jobs";
Student mystudent2 = new Student();
mystudent2.FirstName = "Bill";
mystudent2.LastName = "Gates";