当前位置:编程学习 > C#/ASP.NET >>

请问如何动态获得变量的值?

有如下变量:title_1,title_2,title_3....title_n

请问我如何循环得到变量的值:

for (int i=0; i<=n ;i++)
{
       Response.Write("<script>alert('" + title_i.ToString() + "!');</script>");
}

谢谢? --------------------编程问答-------------------- " + title_ + i.ToString() + "!');</script>") --------------------编程问答--------------------  
string title=string.Empty;
title="title_"+i.ToString();
Response.Write("<script>alert('" + title + "!');</script>"); --------------------编程问答-------------------- 楼主 莫非真的 是 新手?

欢迎新人哈! --------------------编程问答-------------------- 总结
for (int i=0; i<=n ;i++)
{
       string title=string.Empty;
       title="title_"+i.ToString();
       Response.Write("<script>alert('" + title + "!');</script>"); 
} --------------------编程问答-------------------- 二楼理解错了
比如:title_1=“111”,title_2=“222”,title_3=“333”....title_n=“nnn"

我希望能够通过for循环得到title_i这个变量所对应的值
for (int i=0; i<=n ;i++)
{
       Response.Write("<script>alert('" + title_i.ToString() + "!');</script>");
}
我希望能够得到111,222,333....nnn这样的值

按二楼的做法只能得到
title_1,title_2,title_3...title_n这样的字符串。



--------------------编程问答-------------------- 如果n不大,可以这样:
string[] titles = new string[]{title_1, title_2, title_3};
foreach(string title in titles)
{
  Response.Write(...);
}

如果n比较大,那你可以考虑直接用一个数组来定义title们,毕竟一个一个声明也很累人。 --------------------编程问答-------------------- 感觉楼主的意思应该是 “字符串当成变量名使用” 真正想要输出的是title_1里面的值~~

1 BindingFlags bf = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Static;
2 Type type = this.GetType();
3 FieldInfo fi = type.GetField("变量名的字符串", bf);
4 string sql = fi.GetValue(this).ToString();
--------------------编程问答--------------------
引用 7 楼 dashuai521241 的回复:
感觉楼主的意思应该是 “字符串当成变量名使用” 真正想要输出的是title_1里面的值~~
C# code?12341 BindingFlags bf = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Static;2 Type type = this.GetType();3 FieldInf……

+1
其实就是用到了反射,来动态获取变量值为变量的变量值。
好绕口啊! --------------------编程问答--------------------

                BindingFlags bf = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Static;
Type type = this.GetType();
FieldInfo fi;

for (int counti = 1; counti <= n; counti++)
{
    fi = type.GetField("title_"+counti.ToString().Trim(), bf);
    title = fi.GetValue(this).ToString();

   Response.Write("<script>alert('" + title.ToString() + "!');</script>");
}


为何执行到title = fi.GetValue(this).ToString();
提示错误:未将对象引用设置到对象的实例
谢谢 --------------------编程问答-------------------- 请高手解惑呀 --------------------编程问答-------------------- C#中变量名就是一个存储了一个在缓存中的地址信息,你不可能通过一个与变量名一样的字符串就读到一样的地址信息,进而读取到这个缓存地址下的值。
最好还是把这样变量在读的时候就放到一个数组里然后做处理。 --------------------编程问答-------------------- class Program
    {
        public int num1 = 1;
        public int num2 = 2;
        public int num3 = 3;
        static void Main(string[] args)
        {
           Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
           Type type = assembly.GetType("csdn测试.Program");
           object obj = Activator.CreateInstance(type, true);

           FieldInfo classField = type.GetField("num"+1);
           Console.WriteLine("num"+1+":" + classField.GetValue(obj).ToString());
           Console.Read();
        }
    } --------------------编程问答--------------------
        public string title_1 = "111";
        public string title_2 = "222";
        public string title_3 = "333";
        protected void Page_Load(object sender, EventArgs e)
        {
            for (int i = 1; i <= 3; i++)
            {
                Response.Write("<script>alert('" +this.GetType().GetField("title_"+i).GetValue(this).ToString() + "!');</script>");
            }
        } --------------------编程问答-------------------- <script>
var title_0='111',title_1='2222',title_2='3333';

for(var i=0;i<3;i++){
alert(eval("title_"+i)+"!");
}

</script>
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,