亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決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();然后做這樣的事情來設置一個值:row.id = "id123";如何制作某種類型的“動態”參考?這不起作用:string col = "id";  row[col] = "id123";
查看完整描述

3 回答

?
莫回無

TA貢獻1865條經驗 獲得超7個贊

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


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

prop.SetValue(row,"id123");


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

TA貢獻1921條經驗 獲得超9個贊

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


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);

    }

}

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


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

TA貢獻1786條經驗 獲得超13個贊

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

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


查看完整回答
反對 回復 2022-11-22
  • 3 回答
  • 0 關注
  • 151 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號