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

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

使用反射在類中循環(huán)遍歷結(jié)構(gòu)

使用反射在類中循環(huán)遍歷結(jié)構(gòu)

C#
哆啦的時(shí)光機(jī) 2021-06-04 18:37:08
public struct volt_struct{    public string volt1;    public string volt2;    public string volt2;    public string volt3;}private class Injection_class{    public volt_struct stru1;    public volt_struct stru2;    public volt_struct stru3;    public volt_struct stru4;    public volt_struct stru5;    public volt_struct stru6;}public void main(){    Injection_class Time = new Injection_class();    //Here is code that fills Time with Time values as string type    string s="";    FieldInfo[] fi_inner = Time.stru1.GetType().GetFields();    FieldInfo[] fi_outer = Time.GetType().GetFields();    // This part is wrong, but shows what I want to achive.    foreach(FieldInfo field_outer in fi_outer)    {        foreach(FieldInfo field_inner in fi_inner)        {            s = string.concat(s+field_outer.field_inner.GetValue(Time) + ";");        }    }}我想使用反射將存儲(chǔ)在 Time 中的字符串連接到字符串 s 中。稍后我必須修改類和結(jié)構(gòu),我不想調(diào)整連接代碼。通過(guò)對(duì)類中的每個(gè)結(jié)構(gòu)使用 foreach 循環(huán),我得到了想要的結(jié)果。 foreach (FieldInfo field in fi_inner){    s = string.Concat(s + field.GetValue(Time.stru1) + ";");    //field.SetValue(Time, "not measured"); //reset value}foreach (FieldInfo field in fi_inner){    s = string.Concat(s + field.GetValue(Time.stru2) + ";");    //field.SetValue(Time, "not measured"); //reset value}//and so one for each other struct我想像我給出的第一個(gè)例子一樣實(shí)現(xiàn)它。這可能嗎?
查看完整描述

2 回答

?
大話西游666

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

對(duì)“field_inner”進(jìn)行操作的 FieldInfo 屬性需要引用“volt_struct”類型的對(duì)象,因此 Time 在這里不起作用。您需要先在“field_outer”上執(zhí)行 GetValue,如下所示:


foreach(FieldInfo field_outer in fi_outer)

{

    var outer_object = field_outer.GetValue(Time);

    if (outer_object == null) throw someexception;


    foreach (FieldInfo field_inner in fi_inner)

    {

        s = string.concat(s+field_inner.GetValue(outer_object) + ";");

    }

}

如果您想改變父類型和子類型,您可以將它們作為 System.Type 參數(shù)傳入,或者您可以編寫具有兩個(gè)類型參數(shù)的泛型函數(shù)。您也可以將 'fi_inner =' 移入外循環(huán)并執(zhí)行 fi_inner = outer_object.GetType().GetFields()。這將連接任何類型的子對(duì)象上的字符串。


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

添加回答

舉報(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)