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

我想实现这么一个东西

           

代码很简单
            StringBuilder strcode = new StringBuilder();
            strcode.AppendLine("Text1 txt=new Text1()");//在strcode追加字符串

            textBox1.Text = strcode.ToString();

我希望strcode追加的字符串“Text1 txt=new Text1()”,能在编译器里面执行。也就是说字符串能够在运行时被编译。 --------------------编程问答-------------------- 也就是说字符串能够在运行时被编译?
什么意思? --------------------编程问答-------------------- Text1 txt=new Text1();

这句话因为是字符串所以编译器不会把他作为 c#语言执行。

我的目的是希望能把字符串里的东西执行。 --------------------编程问答-------------------- 建议LZ研究下这个命名空间 system.codedom --------------------编程问答-------------------- Text1 txt=new Text1()中txt是个对象,所以你要实现的功能是不是可以这样实现,在Text1这个类中override一下ToString这个方法(这个方法里面就是你到底想把这个对象转化成什么样字符串的方法),然后:
 strcode.AppendLine("Text1 txt=new Text1()");改为
Text1 txt=new Text1();
strcode.AppendLine(txt.ToString());

欧了。
  --------------------编程问答-------------------- 两个思路
1.解析字符串,利用反射动态创建对象
2.动态编译http://www.cnblogs.com/cxd4321/archive/2008/07/09/1239150.html --------------------编程问答-------------------- 谢谢大家,我想用c#做一个解释器试试 --------------------编程问答-------------------- 第一个能具体说一下吗 --------------------编程问答--------------------
引用 6 楼 MeSharp 的回复:
谢谢大家,我想用c#做一个解释器试试

lz的勇气可嘉,不过解释器这个东西的复杂度相当高。
支持一下。 --------------------编程问答-------------------- 单独的一个 Text1 txt=new Text1(); 你只能分析出进行操作了.


如果是代码 你可以考虑使用
System.CodeDom.Compiler和Microsoft.CSharp

你可以参考下面
http://blog.csdn.net/zgke/archive/2009/03/04/3955490.aspx --------------------编程问答-------------------- 1、C#内置了编译器的使用类,在System.Codedom命名空间下,可以运行时把字符串当作源码编译

2、C#2.0中支持eval方法,可以把字符串当作源码执行,但相对较简单 --------------------编程问答-------------------- 了解下System.Codedom。。。。 --------------------编程问答-------------------- 好象VS自带了一个编译软件,是命令行形式的,应该可以用C#调用吧 --------------------编程问答-------------------- 参考SharpDevelop吧 --------------------编程问答-------------------- 加一个@符号就可以啦 
StringBuilder strcode = new StringBuilder(); 
            strcode.AppendLine(@"Text1 txt=new Text1()");//在strcode追加字符串 

            textBox1.Text = strcode.ToString();
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,