C#里定义int类型变量a1、a2、a3、a4、a5,如何采用索引的形式挨个赋值
C#里定义int类型变量a1、a2、a3、a4、a5,如何采用索引的形式挨个赋值不要说创建一个数组,我也知道可以,那我就不用问了,现在的情况就是怎么通过a后面的数字来给这...
C#里定义int类型变量a1、a2、a3、a4、a5,如何采用索引的形式挨个赋值不要说创建一个数组,我也知道可以,那我就不用问了,现在的情况就是怎么通过a后面的数字来给这组变量赋值
展开
3个回答
展开全部
软糖来回答把。方法有很多种。
抛开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
}
}
展开全部
double total=0;
for (int i=0; s.Length-1;i++)
{
int n=0;
int.TryParse(s[i],out n);
total+=n;
}
for (int i=0; s.Length-1;i++)
{
int n=0;
int.TryParse(s[i],out n);
total+=n;
}
追问
谢谢你,但是你理解错了,第一,a不是数组,不能用length,第二,这里是赋值,不是读值
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以通过循环呀
追问
主要是如何赋值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询