當前位置:成語大全網 - 新華字典 - C#裏定義int類型變量a1、a2、a3、a4、a5,如何采用索引的形式挨個賦值

C#裏定義int類型變量a1、a2、a3、a4、a5,如何采用索引的形式挨個賦值

軟糖來回答把。方法有很多種。

拋開a1,a2那套變量,使用Dictionary<string, int>來存儲變量名和數值。

Dictionary<string,?int>?字典?=?new?Dictionary<string,?int>();

字典.Add("a1",?1);?//添加變量a1,?值為1

字典.Add("a2",?2);

字典.Add("a178",?4);

字典.Add("a179",?5);

字典["a"?+?1.ToString()]?=?100;?//給變量a1值設為100,嗯,就當它是變量把。?

字典["a"?+?2.ToString()]?=?200;

var?index?=?178;

字典["a"?+?index.ToString()]?=?400;

字典["a179"]?=?500;

2.如果變量是引用類型,可以把這些變量裝進容器,然後用容器索引指向這些變量。

但是int是值類型,這就不好辦了。

要麽把int改為引用化的類型Qint(軟糖自己寫的新int類)

要麽使用string之類的。

///?<summary>

///?封裝指定類型的結構到屬性da,使其作為數值。

///?<para>方便復雜計算、參數傳遞和腳本編譯。</para>?

///?</summary>

///?<typeparam?name="T">必須為沒有null值的結構</typeparam>

public?class?數值<T>?where?T?:?struct?{

public?T?da?{?get?{?return?get();?}?set?{?set(value);?}?}

public?數值()?{?}

public?數值(T?value)?{?da?=?value;?}

public?virtual?T?get()?{?return?da;?}

public?virtual?void?set(T?value)?{?da?=?value;?}

public?static?implicit?operator?T(數值<T>?數值)?{?return?數值.da;?}

public?static?explicit?operator?數值<T>(T?value)?{?return?new?數值<T>(value);?}

}?

public?class?Qint?:?數值<int>?{

public?Qint()?:?base()?{?}

public?Qint(int?value)?:?base(value)?{?}

public?static?implicit?operator?int(Qint?數值)?{?return?數值.da;?}

public?static?explicit?operator?Qint(int?value)?{?return?new?Qint(value);?}

}string?a1?=?"0",?a2?=?"0",?a3?=?"0",?a4?=?"0",?a5?=?"0";

List<string>?我是壹個容器?=?new?List<string>()?{?"",?a1,?a2,?a3,?a4,?a5?};

我是壹個容器[1]?=?"3";

我是壹個容器[2]?=?"4";

我是壹個容器[3]?=?"5";

我是壹個容器[4]?=?"6";

我是壹個容器[5]?=?"7";

3.使用反射。System.Reflection。但是這個效率很低。

using?System.Reflection;

public?class?反射類

{

public?int?a1?=?1;

public?int?a2?=?2;

public?int?a3?=?3;

void?獲取變量(int?序號)?{

反射類?反射類實例?=?new?反射類();

Type?t?=?typeof(反射類);?//獲取a1所在的類class

FieldInfo?變量信息?=?t.GetField("a"?+?序號.ToString());?//獲取a1這個變量信息

var?獲得的值?=?(int)變量信息.GetValue(反射類實例);?//獲取a1所在的實例的值

變量信息.SetValue(反射類實例,?3);?//復制a1所在的實例的值?=?3

}

}