Setter和Getter方法是如何工作的

本文关键字:工作 何工作 Getter 方法 Setter | 更新日期: 2023-09-27 18:16:29

在开始封装和学习如何使用属性之前,我一直在研究setter和getter方法。
我了解SetIDGetID方法是如何工作的,但我不确定SetName, GetNameGetPassMark方法。

using System;
public class Student
{
    private int _id;                                      
    private string _Name;
    private int _PassMark = 35;
    public void SetId(int Id)      
    {
        if (Id<=0)                    
        {
            throw new Exception("Student Id cannot be negative");  
        }
        this._id = Id;      
    }
    public int GetId()                    
    {
        return this._id;
    }
    public void SetName(string Name)
    {
        if(string.IsNullOrEmpty(Name))      
        {
            throw new Exception("Name cannot be null or empty");
        }
        this._Name = Name;
    }
    public string GetName()
    {
        if(string.IsNullOrEmpty(this._Name))   
        {
            return "No Name";
        }
        else
        {
            return this._Name;
        }
    }
    public int GetPassMark()
    {
        return this._PassMark;
    }
}
public class Program
{
    public static void Main()                                                               
    {
        Student C1 = new Student();                                                                       
        C1.SetId(101);                
        C1.SetName("Mark");           
        Console.WriteLine("ID = {0}" , C1.GetId());
        Console.WriteLine("Student Name = {0}", C1.GetName());       
        Console.WriteLine("PassMark = {0}", C1.GetPassMark());
    }
}

当我查看SetName时,我明白如果字符串为空或null,我们抛出异常,否则this._Name = Name
但是当我看到GetName时,我真的不明白为什么会有if语句。
如果Name为null或空,则不存在this._Name,因为我们在SetName中抛出异常。
我们不能直接在GetName中写下return this._Name吗?
同样在GetPassMark方法中,为什么this.return this._PassMark中是必要的?

Setter和Getter方法是如何工作的

因为在创建对象时没有设置_Name。因此,Student对象有可能拥有null _Name。您可以通过在构造函数中设置_Name来修复它,然后就可以返回它。

许多人喜欢使用this,即使它不是真正必要的,因为它使代码更明显。这只是语法上的偏好。