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

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

我的問題是:我想得到值分別是0011為什么最終變成了1111?

我的問題是:我想得到值分別是0011為什么最終變成了1111?

C#
暮色呼如 2023-04-09 21:17:08
這是第一個(gè)類,也是我要反射的類using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication4{public class Refection{private string name;public string Name{get { return name; }set { name = value; }}private string age;public string Age{get { return age; }set { age = value; }}}}這是主程序的類using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Reflection;namespace ConsoleApplication4{public class Program{public static List<object> GetRefection(object obj) {List<object> objs = new List<object>();Type t = obj.GetType();PropertyInfo[] pros = t.GetProperties();for (int i = 0; i < 2; i++){foreach (PropertyInfo pro in pros){pro.SetValue(obj, i.ToString(), null);}objs.Add(obj);}return objs;}static void Main(string[] args){Refection refe = new Refection();List<Object> objs = GetRefection(refe);for (int i = 0; i < objs.Count; i++){Type t = objs[i].GetType();PropertyInfo[] pros = t.GetProperties();foreach (PropertyInfo pro in pros){Console.WriteLine(pro.GetValue(objs[i], null));}}}}}
查看完整描述

2 回答

?
慕森卡

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

你的當(dāng)然是1111  
你在反射獲取對象的時(shí)候 循環(huán)操作的時(shí)候操作的是同一個(gè)對象
你必須在循環(huán)中 對對應(yīng)的類型創(chuàng)建新的對象 
然后加入List中的 才并非都引用同一個(gè)對象 
public static List<object> GetRefection(object obj)
{
List<object> objs = new List<object>();
Type t = obj.GetType();

PropertyInfo[] pros = t.GetProperties();
for (int i = 0; i < pros.Length; i++)
{
obj=t.InvokeMember("Refection", BindingFlags.CreateInstance, null, null, null); //加上這一句 
foreach (PropertyInfo pro in pros)
{
pro.SetValue(obj, i.ToString(), null);
}
objs.Add(obj);
}

return objs;
}

其他代碼不變 0011

查看完整回答
反對 回復(fù) 2023-04-11
?
萬千封印

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

for (int i = 0; i < 2; i++)
{
obj=t.InvokeMember("Refection", BindingFlags.CreateInstance, null, null, null); //######
foreach (PropertyInfo pro in pros)
{
pro.SetValue(obj, i.ToString(), null);
}
objs.Add(obj);
}
因?yàn)槟氵@一句objs.Add(obj);添加的是同一個(gè)對象,第一次雖然令其屬性為0,第二次又把它屬性弄成1,都是對這一個(gè)對象操作,”他倆“的屬性會(huì)指到同一個(gè)引用,所以都是11了,你試著增加一個(gè)屬性,然后從0到3循環(huán),將來會(huì)輸出222222的


查看完整回答
反對 回復(fù) 2023-04-11
  • 2 回答
  • 0 關(guān)注
  • 144 瀏覽

添加回答

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