2 回答

TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個(gè)贊
在SetDescription
并且SetName
您正在檢查字段/成員變量而不是 if 語句中的參數(shù)。改為檢查參數(shù)(this
在 if 條件下為否)。

TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個(gè)贊
你有名字沖突。您實(shí)際上是在檢查私有字段,而不是傳遞給您的方法的參數(shù)。
this.Name指的是你的類的私有字段,而不是參數(shù)。這就是正確的命名約定很重要的原因。將參數(shù)更改為小寫以避免混淆,并確保檢查該值null:
public void SetName(string name)
{
if (name == null)
throw new Exception("The name can't be blank");
else
this.Name = name;
}
您可能還需要考慮使用靜態(tài)String函數(shù)IsNullOrWhiteSpace:
if (String.IsNullOrWhiteSpace(name))
throw new Exception("The name can't be blank");
私有字段也有一些約定,因此您可能也想更改該字段的名稱。例如,命名私有字段的常用方法是:
private string _name;
你的 try/catch 塊總是被觸發(fā),因?yàn)槟憧偸菣z查私有字段是null. 一旦您更正了該字段的問題,將對(duì)參數(shù)進(jìn)行檢查,該字段將被正確設(shè)置并且不應(yīng)執(zhí)行 try/catch 塊(當(dāng)然,除非您傳入一個(gè)null值)。
- 2 回答
- 0 關(guān)注
- 199 瀏覽
添加回答
舉報(bào)