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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C# 類對象 JavaScript 類似使用

C# 類對象 JavaScript 類似使用

C#
叮當貓咪 2022-11-22 16:39:53
在 C# 中,我定義了一個類對象,如下所示:public class Row    {        public string id { get; set; }        public string full_name { get; set; }        public string email { get; set; }    } 接下來我可以像這樣使用它:Row row = new Row();然后做這樣的事情來設(shè)置一個值:row.id = "id123";如何制作某種類型的“動態(tài)”參考?這不起作用:string col = "id";  row[col] = "id123";
查看完整描述

3 回答

?
莫回無

TA貢獻1865條經(jīng)驗 獲得超7個贊

您可以像這樣在 C# 中使用反射:


var prop=row.GetType().GetProperty("id");

prop.SetValue(row,"id123");


查看完整回答
反對 回復(fù) 2022-11-22
?
郎朗坤

TA貢獻1921條經(jīng)驗 獲得超9個贊

要回答您的確切問題,您可以創(chuàng)建一個自定義索引器:


public object this[string key]

{

    get

    {

        switch(key)

        {

             case nameof(id): return id;

             case nameof(full_name): return full_name;

             case nameof(email): return email;

             default: throw new ArgumentOutOfRangeException();

        }

    }      

    set

    {

        switch(key)

        {

             case nameof(id):

                 id = value.ToString();

                 break;

             case nameof(full_name):

                 full_name = value.ToString();

                 break;

             case nameof(email):

                 email = value.ToString();

                 break;

             default: throw new ArgumentOutOfRangeException();

        }

    }

}


public void Foo()

{

    var row = new Row();

    row["id"] = "Foo";

}

或者你像 TSungur 回答的那樣使用反射:


public object this[string key]

{

    get

    {

        var prop = GetType().GetProperty(key);

        return prop.GetValue(this);

    }      

    set

    {

        var prop = GetType().GetProperty(key);

        prop.SetValue(this, value);

    }

}

但是,如果我是你,我會審查你當前的圖書館設(shè)計??赡苣胧褂孟馝ntity Framework這樣的 ORM ,它會為您完成所有映射。


查看完整回答
反對 回復(fù) 2022-11-22
?
開滿天機

TA貢獻1786條經(jīng)驗 獲得超13個贊

C# 是一種強類型語言。這意味著一旦定義了類型,您就不能在運行時動態(tài)更改它*。您也不能像在 JavaScript 中那樣使用 [] 訪問對象的屬性。因此,您無法在 C# 中實現(xiàn)您想要的。C# 方式很可能是直接通過row.id = "id23";. 在 C# 中,您總是在編譯時知道對象上有哪些屬性和方法可用。Dictionary如果您需要更多的靈活性,您還可以使用 aKeyValuePair或簡單地使用 a List。

*實際上有一個動態(tài)關(guān)鍵字可以為您提供某些功能 - 但在所有地方使用它并不常見。來自 JavaScript 我建議暫時忘記它。幾乎總是有另一種“更像 C#”的方式。


查看完整回答
反對 回復(fù) 2022-11-22
  • 3 回答
  • 0 關(guān)注
  • 157 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

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