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

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

C#優(yōu)雅的方法來檢查屬性的屬性是否為null

C#優(yōu)雅的方法來檢查屬性的屬性是否為null

C#
拉風(fēng)的咖菲貓 2019-10-17 16:02:11
在C#中,假設(shè)您想在此示例中從PropertyC中提取一個(gè)值,并且ObjectA,PropertyA和PropertyB都可以為null。ObjectA.PropertyA.PropertyB.PropertyC如何以最少的代碼安全地獲取PropertyC?現(xiàn)在,我將檢查:if(ObjectA != null && ObjectA.PropertyA !=null && ObjectA.PropertyA.PropertyB != null){    // safely pull off the value    int value = objectA.PropertyA.PropertyB.PropertyC;}做更多類似這樣的事情(偽代碼)會(huì)很好。int value = ObjectA.PropertyA.PropertyB ? ObjectA.PropertyA.PropertyB : defaultVal;可能甚至?xí)驗(yàn)槭褂每栈锇檫\(yùn)算符而崩潰。編輯最初,我說我的第二個(gè)示例就像js,但是我將其更改為偽代碼,因?yàn)檎_地指出了它在js中不起作用。
查看完整描述

3 回答

?
侃侃爾雅

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

在C#6中,可以使用Null條件運(yùn)算符。因此原始測(cè)試將是:


int? value = objectA?.PropertyA?.PropertyB?.PropertyC;


查看完整回答
反對(duì) 回復(fù) 2019-10-17
?
holdtom

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

您可以在類中添加方法嗎?如果沒有,您是否考慮過使用擴(kuò)展方法?您可以為您的對(duì)象類型創(chuàng)建一個(gè)擴(kuò)展方法,稱為GetPropC()。


例:


public static class MyExtensions

{

    public static int GetPropC(this MyObjectType obj, int defaltValue)

    {

        if (obj != null && obj.PropertyA != null & obj.PropertyA.PropertyB != null)

            return obj.PropertyA.PropertyB.PropertyC;

        return defaltValue;

    }

}

用法:


int val = ObjectA.GetPropC(0); // will return PropC value, or 0 (defaltValue)

順便說一句,這假設(shè)您使用的是.NET 3或更高版本。


查看完整回答
反對(duì) 回復(fù) 2019-10-17
  • 3 回答
  • 0 關(guān)注
  • 1348 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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