就是说,我先是定义了一个int i;
现在我要定义一个string类型(或者其他类型)的变量,而它的变量名是i的值。
举例,我现在i=1;
那我就要定义 string "pic_"+i;
其实,我就想得到string pic_1;如果,i=3的话呢, 
我就要定义,string pic_3;请指教!!

解决方案 »

  1.   

    可以用数组 string[] pic 
      

  2.   

    List<string> lst=new List<string>();
    for(int i=0;i<5;i++)
     lst.Add("pic"+i.ToString());
      

  3.   

    string[] pic = { "pic_0", "pic_1", "pic_2" };
    MessageBox.Show(pic[1]);
      

  4.   

    那我定义的时候就定义 string lst[0].toString() ="";
    是吗?
      

  5.   


    string[] pic = new string[6];
    pic[1] = "ssss";
    MessageBox.Show(pic[1]);
      

  6.   

    程序不是这么学的  直接学 winForm      
      

  7.   

    string str = "A";
    string A= ""; MessageBox.Show(this.GetType().GetField(str).GetValue(this).ToString());
      

  8.   

    其实我想表达的是,能不能定义 string pic[1]="";
    就是说我要定义的变量名是pic[1]这个string数组的值,就是“ssss”。
    string ssss="";就是我想要的
      

  9.   

    php 有那个, c# 没有
      

  10.   


    你的思路不是不能实现,CodeDom就可以. 你的这种用法叫动态源代码生成和编译 命名空间及类库:System.CodeDom.Compiler  实现思路不够简捷.
      

  11.   


    正解!,lz如果必须这么做,还是用还是用动态源代码生成和编译,
    这里有个例子:
    lz看看?c#根据公式进行自动计算的实现(一)using System; 
    using System.CodeDom.Compiler; 
    using System.Reflection; 
    using System.Text; 
    using Microsoft.CSharp; namespace Expression 

    /**//// <summary> 
    /// 计算表达式的类 
    /// </summary> 
    public class CalculateExpression 

    /**//// <summary> 
    /// 接受一个string类型的表达式并计算结果,返回一个object对象,静态方法 
    /// </summary> 
    /// <param name="expression"></param> 
    /// <returns></returns> 
    public static object Calculate(string expression) 

    string className = "Calc"; 
    string methodName = "Run"; 
    expression = expression.Replace("/", "*1.0/"); // 创建编译器实例。 
    ICodeCompiler complier = (new CSharpCodeProvider().CreateCompiler()); // 设置编译参数。 
    CompilerParameters paras = new CompilerParameters(); 
    paras.GenerateExecutable = false; 
    paras.GenerateInMemory = true; // 创建动态代码。 
    StringBuilder classSource = new StringBuilder(); 
    classSource.Append("public class " + className + "\n"); 
    classSource.Append("{\n"); 
    classSource.Append(" public object " + methodName + "()\n"); 
    classSource.Append(" {\n"); 
    classSource.Append(" return " + expression + ";\n"); 
    classSource.Append(" }\n"); 
    classSource.Append("}"); // 编译代码。 
    CompilerResults result = complier.CompileAssemblyFromSource(paras, classSource.ToString()); // 获取编译后的程序集。 
    Assembly assembly = result.CompiledAssembly; // 动态调用方法。 
    object eval = assembly.CreateInstance(className); 
    MethodInfo method = eval.GetType().GetMethod(methodName); 
    object reobj = method.Invoke(eval, null); 
    GC.Collect(); 
    return reobj; 


    }   
    调用:
    textBox3.Text = Expression.Calculate( textBox2.Text).ToString() ;注意点:
    1、不支持sin、cos等数学函数
    2、不支持[]、{}等括号和除数字、+、-、*、/以外的字符,建议调用计算函数前进行输入的验证。