compiler-construction相关内容

为什么这个从int隐式转换为uint工作?

使用铸造空不编译为灵感,并从埃里克利珀的评论: 这说明了一个有趣的案例。 “UINT X =(INT)0;”将会 即使int是不能隐式转换为uint成功。 我们知道这是不行的,因为对象不能分配给字符串: 字符串x =(对象)空; 但这个呢,虽然直观上它不应该: UINT X =(INT)0; 为什么确实编译器允许这种情况下,当 INT 不隐式转换为 UINT ? 解 ..

注释编译成.exe文件在.net中?

我知道你可以使用.NET反射来查看与.NET创建code,但如果我把什么东西在评论我个人的提醒是,编译EXE文件也是如此。 我不打算释放源$ C ​​$ C我的应用程序,我知道100%安全的办法是只删除一切我不想出去,但我只是想知道,如果有人可以逆向工程我的意见/ 感谢 崩溃 解决方案 注释由编译器忽略。他们不会被置于输出可执行文件。 ..
发布时间:2015-11-24 21:32:36 C#/.NET

什么是社会公正的即时编译器和一个跨preTER之间的区别?

什么是社会公正的即时编译器和一个跨preTER之间的差异,以及是否有在.NET和Java JIT编译器之间的区别是什么? 解决方案 即时编译是母语为非code的转换,例如字节code,到被执行之前它原生code。 维基百科: JIT是建立在前面两个观点在运行时环境:字节code编译和动态编译。它执行它本身,例如字节code到本机code之前转换code运行时。 这是 执行程序间pre ..
发布时间:2015-11-24 20:51:35 Java开发

写一个编译器.NET - IL或字节code?

我目前潜入.NET的内部运作,这意味着IL。作为练习,我想建立一个brainf..k编译器.NET(是的,他们已经存在,但表示这是出于学习目的)。 有关的那一刻,我只是写了包含.il内和ILASM,其中工程编译它们一些文本文件。但我不知道如果我可以/应该去更深一层和写字节code直接? 我的“关注”是Windows PE东西编译的EXE时 - 而不是ILASM我将需要某种形式的字节code连接 ..
发布时间:2015-11-24 20:38:48 C#/.NET

只允许自定义属性的特定类型

有没有办法强制编译器来限制自定义属性的使用只在特定的属性类型如int,短,字符串(所有的原始类型)使用? 类似解决方案 没有,你不能,基本上是这样。你可以把它限制在结构 VS 类 VS 接口,也差不多了。另外:你不能外的code(通过 TypeDescriptor 除外,这是不一样的)添加属性类型反正 ..
发布时间:2015-11-24 20:24:09 C#/.NET

获得"源文件不同,模块建造时&QUOT。

我试图调试我收到一个ASP.Net Web项目。我在“Apps_LocalResources”文件夹修改的类。 当我调试和code试图踏进那类,我得到 “源文件是从模块建造时的不同。” 我重建了解决方案,并没有得到任何改变。我甚至它发布到不同的位置和PDB和dll中的bin文件夹并没有改变,所以我没有将它们复制过来。 想法? 解决方案 如果要连接到asp.net工作进程,然后杀死进 ..
发布时间:2015-11-24 20:18:08 C#/.NET

为什么没有未分配的局部变量自动初始化?

好像是没有办法有未分配的局部变量在code或检查它们,因为编译器吐出使用未分配的局部变量错误 为什么编译器不使用默认(T)这些变量在编译时? 即使它是很难做到的值类型,引用类型可以很容易地在这种情况下初始化为空,对吧? 下面是一些测试code: 公共无效测试() { INT X; 字符串s; 如果(X == 5) Console.WriteLine ..
发布时间:2015-11-24 20:06:17 C#/.NET

在什么级别的C#编译器或JIT优化应用程序code?

我想知道这个信息,以减少我的code尺寸的,所以我不会浪费我的时间优化的东西会被编译或JIT来完成。 例如: 如果我们假设编译器内嵌调用属性的get函数,所以我没有保存返回值在一个局部变量,以避免函数调用。 我想推荐一个很好的参考,它描述到底是怎么回事? 解决方案 您可能想看看这些文章: JIT优化 - (萨沙Goldshtein - $ C $的CProject) JIT优化:内联 ..
发布时间:2015-11-24 16:06:30 C#/.NET

如何创建.NET编程语言?

我创建使用一些可用的各种分析工具,几个不同的完整的编程语言。但是,怎么会有人创建一个在.NET Framework编程语言?我本来要输出的.Net IL和编译或是否有更高的抽象水平? 此外,有没有一种简单的方法来获取语言工作在Visual Studio? 解决方案 您会想看一看的微软研究院共同编译器基础设施(CCI)项目。它提供了你需要生成的元数据和MSIL程序集的一切。和调试.pdb文件, ..
发布时间:2015-11-24 15:58:48 C#/.NET

编译器值类型分辨率和硬codeD" 0"整型值

首先,有点背景。阅读问题和接受的答案上面的“怪癖”的东西,我已经知道了很长一段时间。我不明白事业的广度直到最近。 微软对的SqlParameter 类文档大棚多一点光的情况。 当您在值参数中指定的对象的的SqlDbType 是 从对象的Microsoft .NET Framework的类型推断。 在使用此重载的的SqlParameter 构造函数的使用注意事项 指定整数参数值。因为此重载 ..
发布时间:2015-11-24 15:27:43 C#/.NET

是否有可能编译.NET IL code到机code?

我想没有.NET框架分发我的.NET程序。是否有可能一个.NET程序被编译成机器code? 解决方案 是的,你可以使用Ngen.exe,但是这不会删除CLR依赖precompile。 您还必须运送IL组件为好,NGEN的唯一好处是,你的应用程序可以启动,而不必调用JIT,所以你得到一个真正的快速启动时间。 据CLR通过C#: 此外,使用组件precompiled NGEN通常比JIT ..
发布时间:2015-11-24 15:21:22 C#/.NET

在罗斯林代表缓存行为变化

由于以下code: 公共C类 { 公共无效M() { VAR X = 5; 动作< INT>行动= Y => Console.WriteLine(Y); } } 使用VS2013,.NET 4.5。当看到反编译code,我们可以看到,编译器缓存代理的在调用点:的 公共C类 { [编译器生成] 私有 ..
发布时间:2015-11-24 15:00:46 C#/.NET

编译C#到本机?

我觉得我快要编译.NET针对字节code到本机code有些困惑,也许我感到困惑的最终结果。所以,请原谅,因为我尽我想我明白,所以你可以帮我找出我缺少什么排序通过。 我想要做的就是编译我的应用程序用C#编写到正规本土code 就像我会得到,如果我写它在C.我的推理无关做表演,而是有一定程度的保护。据我所知,我的最终目标是不可能的(甚至真的那么难)来规避,但我只是觉得倒车x86汇编比扭转反射器是什么 ..
发布时间:2015-11-24 14:45:39 C#/.NET

将#IF发布工作就像#如果调试不使用C#?

在我所见过的#如果编译器指令的例子,他们使用“调试”。我是否可以使用“释放”以同样的方式来排除我不想在调试模式编译运行code?在code我想围绕这个块发出了一堆邮件,我不想在测试时不小心把那些了。 解决方案 没有,也不会,除非你做一些工作。 这里最重要的部分是什么DEBUG真的是,和它的定义,编译器可以检查对一种恒定的。 如果您检查项目属性,生成选项卡下,你会发现三件事情: 在一个文本 ..
发布时间:2015-11-24 14:44:33 C#/.NET

警告:不同版本的同一依赖程序集之间发现冲突

我目前正在开发一个.NET应用程序,其中包括20个项目。其中有些项目是使用.NET 3.5编译的,有些则还在.NET 2.0的项目(到目前为止没有问题)。 现在的问题是,如果我包括外部组件我总是收到以下警告: “不同版本的同一依赖程序集之间发现冲突”。 究竟该警告表示,是有可能的可能性排除此警告(如使用#pragma禁用源 - code文件)? 解决方案 该警告表示两个项目引用相 ..
发布时间:2015-11-24 14:44:23 C#/.NET

为什么以及如何C#允许访问类本身之外的私有变量时,它同样含有类中?

我不知道这个问题是有足够的描述,但为何以及如何这种行为存在? 公共类层 { 公共字符串名称{;组; } 私人的IEnumerable&其中;层>儿童; 公共的IEnumerable&其中;层>儿童 { {返回this.children.Where(C =>!c.Name = NULL)。选择(C => C); } ..
发布时间:2015-11-24 14:39:26 C#/.NET

为什么要保存在默认情况下,实习生池只包含文字字符串?

为什么默认只有文字字符串保存在实习生池? 从 MSDN 的例子: 字符串S1 =“MyTest的”; 。字符串s2 =新的StringBuilder()追加(“我”)追加(“测试”)的ToString()。 串S3 =的String.intern(S2); Console.WriteLine(“S1 = ='{0}'”,S1); Console.WriteLine(“S2 = ='{0}'”, ..
发布时间:2015-11-24 14:35:55 C#/.NET