C# 基础语法 02 属性方法

本文介绍了C#编程中的基本概念,包括类的概念、字段和属性的定义、对象实例化、无参和有参方法、构造方法、析构方法以及静态方法的使用。通过实例演示了如何声明和操作这些概念。
摘要由CSDN通过智能技术生成

简单复习一下 C# 基础语法(第二期)。

类包含字段、属性和方法,是一个抽象概念。

对象是类的一个实例。

字段和属性

字段和属性定义了对象的特征。

声明一个学生类,包含若干个字段和属性。

public enum Gender
{
    Boy,
    Girl
}

public class Student
{
    // 字段
    public string name;    // 姓名(公开)
    public Gender gender;  // 性别(公开)
    private int age;       // 年龄(私有)

    // 属性
    public int Age
    {
        get // 可以获取年龄字段
        {
            return age;
        }
        set // 设置年龄字段时,可以添加逻辑判断,例如限制在 (0, 100) 之间
        {
            // value 是一个关键字,对属性进行赋值时,value 是等号右边的值
            if (value > 0 && value < 100)
            {
                age = value;
            }
        }
    }
}

实例化一个学生对象,对字段和属性进行赋值,并打印结果。

public class Program
{
    static void Main()
    {
        Student student = new Student();
        student.name = "小明";
        student.gender = Gender.Boy;
        student.Age = 200;
        
        Console.WriteLine(student.name);    // 小明
        Console.WriteLine(student.gender);  // Boy
        Console.WriteLine(student.Age);     // 0(对 Age 属性赋值时,数值不在规定范围内,age 字段默认值为 0)
    }
}

方法

方法定义了对象的行为,可以执行一系列的逻辑。

无参方法

没有参数的方法。

例如,声明一个 Say 方法,打印三个句子。

public class Student
{
    // ...

    public void Say()
    {
        Console.WriteLine("你好,我叫 " + name);
        Console.WriteLine("我是一个 " + gender);
        Console.WriteLine("我今年刚满 " + age + " 岁~~~");
    }
}

通过实例对象调用方法。

public class Program
{
    static void Main()
    {
        Student student = new Student();
        student.name = "喵喵球";
        student.gender = Gender.Girl;
        student.Age = 18;
        
        student.Say();
        
        // 你好,我叫 喵喵球
        // 我是一个 Girl
        // 我今年刚满 18 岁~~~
    }
}

有参方法

有参数的方法。

例如,声明一个 Repeat 方法,有一个 string 类型的参数,方法体内会复读传入的内容。

public class Student
{
    // ...

    public void Repeat(string content)
    {
        Console.WriteLine("我再说一遍 " + content);
    }
}

通过实例对象调用方法,并传入一个字符串参数。

public class Program
{
    static void Main()
    {
        Student student = new Student();

        student.Repeat("我今年刚满 18 岁~~~");
        
        // 我再说一遍 我今年刚满 18 岁~~~
    }
}

构造方法

构造方法的名称和类名相同。

当类里面没有写任何构造方法时,会有一个默认的无参构造方法。

public class Student
{
    // 无参构造方法,不写也行
    public Student()
    {

    }
}

如果需要在实例化对象时,有一些执行逻辑,就可以显式写出构造方法。

public class Student
{
    public Student()
    {
		Console.WriteLine("一个对象被实例化了");
    }
}
public class Program
{
    static void Main()
    {
        Student student = new Student();
        
        // 一个对象被实例化了
    }
}

也可以自定义一个有参构造方法。

当参数名和字段名相同时,为了区分是参数赋值给字段,就需要在使用字段时,加上 this。

public class Student
{
    // ...
    
    public Student(string name, Gender gender, int age)
    {
        this.name = name;
        this.gender = gender;
        this.age = age;
    }
}

此时,私有字段 age 可以被直接赋值。

public class Program
{
    static void Main()
    {
        Student student = new Student("小明", Gender.Boy, 10);
    }
}

析构方法

当对象被垃圾收集器回收时,会自动调用析构方法。

析构方法也跟类名相同,前面要加个 ~ 符号。

public class Student
{
    ~Student()
    {
        Console.WriteLine("我被回收了呜呜呜~~~");
    }
}

在 Program 类声明一个静态方法 CreateStudent,方法体内实例化一个对象,当方法调用结束后,对象就没有引用了。

此时可以调用 GC.Collect 方法主动回收一次垃圾,student 对象就会调用析构方法。

public class Program
{
    static void Main()
    {
        CreateStudent();
        GC.Collect();
        
        // 我被回收了呜呜呜~~~
    }
    
    static void CreateStudent()
    {
        Student student = new Student("小明", Gender.Boy, 10);
    }
}

静态方法

不用实例化对象就能调用的方法。

例如,上述的 CreateStudent 方法,前面有个修饰符 static,表示静态的,不需要 new 一个 Program 对象,就能够直接调用。

Student 类也可以声明一个静态方法。

public class Student
{
    public static void Introduce()
    {
        Console.WriteLine("我是一个学生");
    }
}

无需实例化对象,直接通过类名调用。

public class Program
{
    static void Main()
    {
        Student.Introduce();
        
        // 我是一个学生
    }
}
  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值