在开始封装并学习如何使用属性之前,我正在研究Setters和Getters方法。
我了解SetID
和GetID
方法的工作原理,但是我不确定SetName
,GetName
和GetPassMark
方法。
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/