C# 类 class

具有相同或相似性质的一组对象的抽象就是类,类是对一类事物的描述,是抽象的、概念上的意义; 对象是实际存在的该类事物的每个个体,因此也称为实例;

在现实世界中,每个物体都有一些颜色、形状和功能——例如,豪华车法拉利。 法拉利是豪华车类型的对象。 豪华车是一个类,表示速度、颜色、形状、内饰等一些特征。因此,任何制造满足这些要求的汽车的公司都是豪华车类型的对象。 例如,宝马、兰博基尼、凯迪拉克的每一辆车都是“豪华车”类的对象。 在这里,“豪车”是一个类,每一辆实体车都是豪车类的对象。 同样,在面向对象的编程中,类定义了一些属性、字段、事件、方法等。类定义了数据的种类和它们的对象将具有的功能。该行为也称为封装。 类使您能够通过对其他类型、方法和事件的变量进行分组来创建自定义类型。

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

namespace MalemaConsoleApp1
{
    public class Student
    {
        public string myField = string.Empty;

        private string name;

        public Student()
        {
        }

        public void Tell(string teacherName)
        {
            Console.WriteLine($"{teacherName} 老师好 我的名字叫{name} 我今年{Age}岁了。");
        }

        public int Age { get; set; }

        public string Name
        {
            get { return name; }
            set { name = value; }
        }
    }
}

说明

C# 访问修饰符 Access Modifiers

访问修饰符应用于类、方法、属性、字段和其他成员的声明。 它们定义了类及其成员的可访问性。 public、private、protected 和 internal 是 C# 中的访问修饰符。 我们将在关键字部分了解它。

C# 字段 Field

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

C# 构造器 Constructor

一个类可以有参数化或无参数的构造函数。 创建类的实例时将调用构造函数。 可以使用访问修饰符和类名来定义构造函数 : <access modifiers> <class name>(){ } 通常这个访问修饰符都应该是public的。

public class Student
{
    public Student(int id, string name) //构造方法
    {
        this.Id = id;
        this.Name = name;
    }

    public int Id { get; set; }

    public string Name { get; set; }

    public int Age { get; set; }
}

只要定义了一个构造器,哪默认的无参构造器就会消失了。需要的话要自己再定义一下public Student(){} 使用这个构造器来创建一个实例

static void Main(string[] args)
{
    var s1 = new Student(1, "name");
}

也可以用对象初始化语法来创建一个实例

C# 方法 Method

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

{access modifier} {return type} MethodName({parameterType parameterName})

属性 Property

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

private string name;
public string Name
{
    get { return name; }
    set { name = value; }
}

属性封装了一个私有字段。 它提供了获取底层字段值的 getter(get) 和设置底层字段值的 setter(set)。 在上面的例子中,name 是一个不能直接访问的私有字段。 它只能通过 Name 访问。 因此,Name 封装了 name。

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

private string name;
public string Name
{
    get { return $"我的名字{name}"; }
    set
    {
        if (name.Length > 3)
        {
            name = value;
        }
        throw new ArgumentException("名字不能少于三个字");
    }
}

自动属性 Auto-implemented Property

从 C# 3.0 开始,如果你不想在 get 或 set 中做一些逻辑处理,声明属性已经变得很容易了。

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

    public int Age { get; set; }

请注意,上面的属性示例中没有私有字段。 私有字段将由编译器自动创建。 您可以像使用类的普通属性一样使用自动化属性。 当属性访问器中不需要额外的逻辑时,自动实现的属性只是为了方便地声明属性。 C# 6.0 后可以直接 对自动属性赋初始值,如下


        public int Age { get; set; } = 5;

        public string Name { get; set; } = new string("sdf"); //new 也是可以的

命名空间 Namespace

命名空间是一组相关类和命名空间的容器。 使用命名空间我们可以为类创建一个全局唯一类型。

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

namespace MalemaConsoleApp1
{
    public class Student 
    {

    }
}

在上面的示例中,Student 的完全限定类名称是 MalemaConsoleApp1.Student。

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

namespace MalemaConsoleApp1.Models
{
    public class Student 
    {

    }
}

在上面的示例中,Student 的完全限定类名称是 MalemaConsoleApp1.Models.Student。 通常命名空间的命名规则得用复数。

下一篇:C# 变量 variable
最近更新的
...