软糖来回答把。方法有很多种。
抛开a1,a2那套变量,使用Dictionary
Dictionary字典 = new Dictionary ();
字典.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之类的。
///
/// 封装指定类型的结构到属性da,使其作为数值。
///方便复杂计算、参数传递和脚本编译。
///
///必须为没有null值的结构
public class 数值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(数值数值) { return 数值.da; }
public static explicit operator 数值(T value) { return new 数值 (value); }
}
public class Qint : 数值{
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我是一个容器 = new List () { "", 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
}
}
double total=0;
for (int i=0; s.Length-1;i++)
{
int n=0;
int.TryParse(s[i],out n);
total+=n;
}
可以通过循环呀