就是说,我先是定义了一个int i;
现在我要定义一个string类型(或者其他类型)的变量,而它的变量名是i的值。
举例,我现在i=1;
那我就要定义 string "pic_"+i;
其实,我就想得到string pic_1;如果,i=3的话呢,
我就要定义,string pic_3;请指教!!
现在我要定义一个string类型(或者其他类型)的变量,而它的变量名是i的值。
举例,我现在i=1;
那我就要定义 string "pic_"+i;
其实,我就想得到string pic_1;如果,i=3的话呢,
我就要定义,string pic_3;请指教!!
for(int i=0;i<5;i++)
lst.Add("pic"+i.ToString());
MessageBox.Show(pic[1]);
是吗?
string[] pic = new string[6];
pic[1] = "ssss";
MessageBox.Show(pic[1]);
string A= ""; MessageBox.Show(this.GetType().GetField(str).GetValue(this).ToString());
就是说我要定义的变量名是pic[1]这个string数组的值,就是“ssss”。
string ssss="";就是我想要的
你的思路不是不能实现,CodeDom就可以. 你的这种用法叫动态源代码生成和编译 命名空间及类库:System.CodeDom.Compiler 实现思路不够简捷.
正解!,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、不支持[]、{}等括号和除数字、+、-、*、/以外的字符,建议调用计算函数前进行输入的验证。