軟糖來回答把。方法有很多種。
拋開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
}
}