Tutorialsteacher

关注我们

文章
  • C#
  • C# 面向对象编程
  • ASP.NET Core
  • ASP.NET MVC
  • LINQ
  • 控制反转 (IoC)
  • Web API
  • JavaScript
  • TypeScript
  • jQuery
  • Angular 11
  • Node.js
  • D3.js
  • Sass
  • Python
  • Go 语言
  • HTTPS (SSL)
  • 正则表达式
  • SQL
  • SQL Server
  • PostgreSQL
  • MongoDB
  • C# - 入门
  • C# - 版本历史
  • C# - 第一个程序
  • C# - 关键词
  • C# - 类和对象
  • C# - 命名空间
  • C# - 变量
  • C# - 隐式类型变量
  • C# - 数据类型
  • 数字
  • 字符串
  • DateTime
  • 结构体
  • 枚举
  • StringBuilder
  • 匿名类型
  • 动态类型
  • 可空类型
  • C# - 值类型和引用类型
  • C# - 接口
  • C# - 运算符
  • C# - if else 语句
  • C# - 三元运算符 ?
  • C# - Switch 语句
  • C# - For 循环
  • C# - While 循环
  • C# - Do-while 循环
  • C# - 分部类
  • C# - Static 关键字
  • C# - 数组
  • 多维数组
  • 交错数组
  • C# - 索引器
  • C# - 泛型
  • 泛型约束
  • C# - 集合
  • ArrayList
  • List
  • SortedList
  • Dictionary
  • Hashtable
  • Stack
  • Queue
  • C# - 元组
  • C# - 值元组
  • C# - 内置异常
  • 异常处理
  • throw 关键字
  • 自定义异常
  • C# - 委托
  • Func 委托
  • Action 委托
  • Predicate 委托
  • 匿名方法
  • C# - 事件
  • C# - 协变
  • C# - 扩展方法
  • C# - 流 I/O
  • C# - File 类
  • C# - FileInfo 类
  • C# - 对象初始化器
  • OOP - 概述
  • 面向对象编程
  • 抽象
  • 封装
  • 关联与组合
  • 继承
  • 多态
  • 方法重写
  • 方法隐藏
  • C# - SOLID 原则
  • 单一职责原则
  • 开闭原则
  • 里氏替换原则
  • 接口隔离原则
  • 依赖倒置原则
  • 设计模式
  • 单例模式
  • 抽象工厂模式
  • 工厂方法模式
Entity Framework Extensions - 提升 EF Core 9
  批量插入
  批量删除
  批量更新
  批量合并

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 中应用一些额外的逻辑,如下面的示例所示。

示例:C# 中的属性
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 方法。

示例:C# 方法
public int Sum(int num1, int num2)
{
    var total = num1 + num2;
    
    return total;
}

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

示例:C# 方法
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";
TUTORIALSTEACHER.COM

TutorialsTeacher.com 是您权威的技术教程来源,旨在通过循序渐进的方法,指导您掌握各种网络和其他技术。

我们的内容帮助所有级别的学习者轻松快速地学习技术。通过访问此平台,您承认您已阅读并同意遵守我们的使用条款和隐私政策,这些条款和政策旨在保护您的体验和隐私权。

[email protected]

关于我们使用条款隐私政策
copywrite-symbol

2024 TutorialsTeacher.com. (v 1.2) 版权所有。