在开始封装并学习如何使用属性之前,我正在研究Setters和Getters方法。
我了解SetIDGetID方法的工作原理,但是我不确定SetNameGetNameGetPassMark方法。

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

最佳答案

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

许多人更喜欢使用this,即使它实际上不是必需的,因为它会使代码更明显。这只是语法上的偏爱。

关于c# - Setter和Getter方法如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33005487/

10-16 13:28
查看更多