解释一下C#中类的概念
类是 C# 中的基本类型之一。我们可以将类视为与问题域相关的对象的蓝图。它是我们创建对象的模板,定义了从此类创建的对象集将共享的结构和行为。简单来说,类是一个 cookie-cutter,而对象就是 cookie 本身。
类还支持封装,这是面向对象编程中的一个重要概念。这意味着将数据和处理数据的操作组合在一个地方,并为该对象的用户提供一个简单的 API。类允许我们封装数据,并对其他类隐藏不相关的细节。
我们可以使用 class 关键字,后跟类的名称来创建一个类。
// User.cs public class User{ private string name; private int salary; public void Promote(){ salary += 1000; } }登录后复制
每个类都有一个关联的访问修饰符,用于控制该类是否将对其他类可见。以下是我们可以为访问修饰符提供的五个可能值。
访问修饰符 | 描述 th> |
---|---|
公开 | 无限制访问 |
受保护 | 对派生类的有限访问 |
内部 | 对程序集的有限访问 |
受保护的内部 | 对程序集或派生类的访问受到限制 |
私有 | 禁止外部访问 |
要创建类的实例,我们可以使用new关键字。 new 运算符计算对象数据所需的字节数并为对象分配内存。然后它返回一个指向新创建的对象的指针(也称为引用)。
var alice = new User(); var bob = new User();登录后复制
在C#中,类的命名约定遵循PascalCase,即将复合词中的每个单词的首字母大写,例如StringBuilder,UserController等。不需要在文件中创建与类名匹配的类。然而,大多数C#项目都使用了这种约定。
构造函数
在上面的示例中,当我们创建User类的实例(即alice和bob)时,我们没有提供它们的初始名称和工资。通常,新创建的对象需要一些信息来完成其工作,构造函数用于初始化类的数据。
我们可以添加一个构造函数来为用户指定名称和工资,如下所示:
public class User{ private string name; private int salary; public User(string name, int salary){ this.name = name; this.salary = salary; } public void Promote(){ salary += 1000; } }登录后复制
var alice = new User("Alice", 50000); var bob = new User("Bob", 45000);登录后复制
public User(string name){ this.name = name; this.salary = 50000; }登录后复制