C#里定义int类型变量a1、a2、a3、a4、a5,如何采用索引的形式挨个赋值

C#里定义int类型变量a1、a2、a3、a4、a5,如何采用索引的形式挨个赋值不要说创建一个数组,我也知道可以,那我就不用问了,现在的情况就是怎么通过a后面的数字来给这... C#里定义int类型变量a1、a2、a3、a4、a5,如何采用索引的形式挨个赋值不要说创建一个数组,我也知道可以,那我就不用问了,现在的情况就是怎么通过a后面的数字来给这组变量赋值 展开
 我来答
魔法软糖™
2019-06-11 · TA获得超过837个赞
知道小有建树答主
回答量:822
采纳率:94%
帮助的人:144万
展开全部

软糖来回答把。方法有很多种。

  1. 抛开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
        }
    }
中冥利3328
2019-06-05 · TA获得超过4040个赞
知道大有可为答主
回答量:8153
采纳率:84%
帮助的人:335万
展开全部
double total=0;
for (int i=0; s.Length-1;i++)
{
int n=0;
int.TryParse(s[i],out n);
total+=n;
}
追问
谢谢你,但是你理解错了,第一,a不是数组,不能用length,第二,这里是赋值,不是读值
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小李冷知识
2019-06-05
知道答主
回答量:29
采纳率:0%
帮助的人:5.9万
展开全部
可以通过循环呀
追问
主要是如何赋值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式