第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在類的“設(shè)置”函數(shù)中捕獲空異常?(C#)

如何在類的“設(shè)置”函數(shù)中捕獲空異常?(C#)

C#
侃侃爾雅 2022-01-16 14:41:40
我應(yīng)該編寫一個(gè)程序,讓用戶輸入一本書的名稱、描述和頁數(shù),如果名稱或描述為空,或者頁數(shù)小于零,程序應(yīng)該捕獲異常. 老師說我們需要在類的“set”函數(shù)中捕捉異常,但我似乎無法正確理解。這是類的樣子:class Book{    private string Name;    private string Description;    private int Pages;    public string GetName()    {        return Name;    }    public string GetDescription()    {        return Description;    }    public int GetPages()    {        return Pages;    }    public void SetName(string Name)    {        if (this.Name == null)            throw new Exception("The name can't be blank");        else            this.Name = Name;    }    public void SetDescription(string Description)    {        if (this.Description == null)            throw new Exception("The description can't be blank");        else            this.Description = Description;    }    public void SetPages(int Pages)    {       if(Pages > 0)        {            this.Pages = Pages;        }       else        {            Console.WriteLine("Number of pages has to be higher than zero");        }       }    public void Write()    {        Console.WriteLine("Name: {0}, Description: {1}, Pages: {2}", Name, Description, Pages);    }}主要看起來像這樣:Book hp = new Book();        hp.SetName("Harry Potter");        hp.SetDescription("It's okay");        hp.SetPages(-500);        hp.Write();我知道 SetPages 并沒有真正使用 catch 方法,但我認(rèn)為它仍然有效(盡管如果有人知道如何使用 catch 方法,我會(huì)很高興聽到)。我的問題是,即使名稱和描述字符串明顯有輸入,仍然會(huì)拋出空異常。有人知道我該如何解決嗎?任何幫助,將不勝感激。
查看完整描述

2 回答

?
catspeake

TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個(gè)贊

SetDescription并且SetName您正在檢查字段/成員變量而不是 if 語句中的參數(shù)。改為檢查參數(shù)(this在 if 條件下為否)。


查看完整回答
反對(duì) 回復(fù) 2022-01-16
?
MMMHUHU

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值)。


查看完整回答
反對(duì) 回復(fù) 2022-01-16
  • 2 回答
  • 0 關(guān)注
  • 199 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)