C# 类和对象
类就像一个特定对象的蓝图,它具有某些属性和特征。例如,一辆汽车应该具有一些属性,如四个轮子、两个或更多的车门、方向盘、挡风玻璃等。它还应该具有一些功能,如启动、停止、运行、移动等。现在,任何具有这些属性和功能的物体都是一辆汽车。在这里,汽车是一个定义了一些特定属性和功能的类。每一辆汽车都是汽车类的一个对象。你可以说你拥有的汽车是汽车类的一个对象。
同样,在面向对象编程中,一个类定义了一些属性、字段、事件、方法等。一个类定义了其对象将拥有的数据类型和功能。
定义一个类
在 C# 中,可以使用 class
关键字定义一个类。让我们定义一个名为 'Student' 的类。
class Student
{
}
一个类可以包含一个或多个构造函数、字段、方法、属性、委托和事件。它们被称为类成员。一个类及其成员可以具有访问修饰符,如 public、private、protected 和 internal,以限制程序其他部分的访问。
让我们为 Student
类添加不同的成员。
字段
一个类可以有一个或多个字段。它是一个类级别的变量,用于保存一个值。通常,字段成员应该使用与属性一起使用的 private 访问修饰符。
class Student
{
public int id;
}
属性
属性使用 setter 和 getter 封装一个私有字段,以分配和检索底层字段值。
class Student
{
private int id;
public int StudentId
{
get { return id; }
set { id = value; }
}
}
在上面的示例中,id
是一个无法直接访问的私有字段。它只能使用 StudentId
属性访问。get
返回底层字段的值,set
将值分配给底层字段 id
。
您还可以在 get 和 set 中应用一些额外的逻辑,如下面的示例所示。
private int id;
public int StudentId
{
get { return id; }
set {
if (value > 0)
id = value;
}
}
自动实现属性
从 C# 3.0 开始,如果您不想在 getter 或 setter 中应用任何逻辑,属性声明变得简单。使用自动实现属性,您不需要声明底层的私有字段。C# 编译器将自动在 IL 代码中创建它。
class Student
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
在上面的示例中,FirstName
和 LastName
的私有支持字段将由编译器在内部创建。这加快了开发时间和代码的可读性。
方法
一个方法可以包含一个或多个语句,作为一个单一单元执行。一个方法可能返回也可能不返回一个值。一个方法可以有一个或多个输入参数。
[access-modifier] return-type MethodName(type parameterName1, type parameterName2,...)
{
}
以下定义了返回两个数字之和的 Sum
方法。
public int Sum(int num1, int num2)
{
var total = num1 + num2;
return total;
}
以下方法不返回任何内容,也没有任何参数。返回类型是 void
。
public void Greet()
{
Console.Write("Hello World!");
}
以下定义了 Student
类中的 GetFullName()
方法。
class Student
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string GetFullName()
{
return FirstName + " " + LastName;
}
}
构造函数
构造函数是一种特殊类型的方法,当您创建类的实例时会自动调用它。构造函数通过使用访问修饰符和类名 <access-modifier> <class-name>()
来定义。
class Student
{
public Student()
{
//constructor
}
}
- 构造函数名称必须与类名相同。
- 构造函数可以是 public、private 或 protected。
- 构造函数不能返回任何值,因此不能有返回类型。
- 一个类可以有多个具有不同参数的构造函数,但只能有一个无参数构造函数。
- 如果没有定义构造函数,C# 编译器将在内部创建它。
类的对象
您可以创建类的一个或多个对象。每个对象可以具有不同的属性和字段值,但方法和事件的行为相同。
在 C# 中,可以使用 new
关键字创建类的对象,并将该对象分配给类类型的变量。例如,以下代码创建了 Student
类的一个对象,并将其分配给 Student
类型的变量。
Student mystudent = new Student();
您现在可以使用 object.MemberName
语法访问类的公共成员。
Student mystudent = new Student();
mystudent.FirstName = "Steve";
mystudent.LastName = "Jobs";
mystudent.GetFullName();
您可以创建具有不同属性和字段值的类的多个对象。
Student mystudent1 = new Student();
mystudent1.FirstName = "Steve";
mystudent1.LastName = "Jobs";
Student mystudent2 = new Student();
mystudent2.FirstName = "Bill";
mystudent2.LastName = "Gates";