Tag: 编译器构造

条件语句,generics委托不必要的演员

设置Action值时,我在条件语句中遇到了这个非常奇怪的问题。 这不是我不知道如何解决这个问题,因为使用普通的if很容易解决。 这是我的问题: public class Test { public bool Foo { get; set; } public Action Action { get; set; } public void A() { Action = Foo ? B : C;//Gives compiler error } public void B(bool value) { } public void C(bool value) { } } 这给了我一条消息的编译器错误 “方法组”和“方法组”之间没有隐式转换。 这很奇怪,因为我无法弄清楚为什么这是非法的。 顺便说一句,下面的语法将使这个有效(从编译器的角度来看): public void A() […]

可以为空的枚举的扩展方法

我正在尝试为可为空的枚举编写一个Extension方法 。 与此示例一样: // ItemType is an enum ItemType? item; … item.GetDescription(); 所以我写了这个方法,由于某些我不理解的原因而无法编译: public static string GetDescription(this Enum? theEnum) { if (theEnum == null) return string.Empty; return GetDescriptionAttribute(theEnum); } 我在Enum?上收到以下错误Enum? : 只有非可空值类型才能成为system.nullable的基础 为什么? 枚举不能为null ! 更新: 如果有很多枚举,则ItemType只是其中一个的示例。

CompileAssemblyFromDom抛出访问被拒绝的exception

代码: using (var codeProvider = new CSharpCodeProvider()) { var compilerParameter = new CompilerParameters( _assemblies, assemblyName, false) { GenerateInMemory = true, CompilerOptions = “/optimize” }; var compilerResults = codeProvider.CompileAssemblyFromDom( compilerParameter, templateResults.Select(r => r.GeneratedCode) .ToArray()); } 它抛出exception:CS1567生成Win32资源时出错:访问被拒绝。 这是什么意思?

这是VB.NET编译器中的错误还是设计错误?

我发现C#和VB编译器之间的重载决策有所不同。 我不确定这是错误还是设计错误: Public Class Class1 Public Sub ThisBreaks() ‘ These work ‘ Foo(Of String)(Function() String.Empty) ‘Expression overload ‘ Foo(String.Empty) ‘T overload ‘ ‘ This breaks ‘ Foo(Function() String.Empty) End Sub Public Sub Foo(Of T)(ByVal value As T) End Sub Public Sub Foo(Of T)(ByVal expression As Expression(Of Func(Of T))) End Sub End Class 请注意,重载的Foo方法是否在VB中定义无关紧要。 唯一重要的是呼叫站点在VB中。 VB编译器将报告错误: […]

使用.net代码更新cshtml文件时,为什么不需要编译?

我正在使用Asp.net Mvc,我想知道为什么我不需要在cshtml文件中更新.net代码时编译我的项目? 现在,如果我们谈论html \ css更新,那么我清楚地理解为什么简单的刷新就足够了,但是在这些情况下.net代码如何动态编译? 让我说我有一个视图,我想添加一些c#代码,如Datetime.Now.ToString(); 现在我通常可以将这行代码添加到我的cshtml文件中,保存文件,刷新页面并查看结果而不编译。 如果我通过向我的模型添加属性来“按书”执行相同操作,在我的控制器中分配Datetime.Now.ToString()并简单地渲染新的var我需要编译我的代码以便查看更改。 这个神奇的工作原理如何? 如果这么简单,为什么不能用.cs文件呢? Ps同样的问题与asp.net应用程序和aspx \ ascx页面相关。

编译简单的字符串

只是想知道c ++ OR c#中是否有任何内置函数可以让你在运行时使用编译器? 例如,如果我想翻译: !print “hello world”; 成: MessageBox.Show(“hello world”); 然后生成一个exe,然后才能显示上面的消息? 我几年前在网上看到过这样做的样本项目,但是找不到它了。

预编译的ASP.NET网站上的“JIT时间”的高,波动

使用预编译 (可更新)的150 * .dll ASP.NET网站,在应用程序预热后,“JIT时间百分比”的一些可能原因通常很高(> 60%)并且波动很长(访问所有function)并且没有应用程序重新启动或文件更改可能会生成新程序集? 可以预期,为该所有程序集生成的机器代码将在该app-domain的持续时间内重复使用。 缓存的机器代码量是否有限? 在什么情况下,同一个程序集需要在同一应用程序域中重新JIT? 或者是否必然会生成新的程序集? 内存压力等因素会影响性能指标吗? 参考 : http://forums.asp.net/p/967386/2959500.aspx

从Java / C#角度理解C ++编译器

我是一名经验丰富的Java / C#程序员,我最近开始学习C ++。 问题是,我无法理解如何构造各种头文件和代码文件。 这似乎主要是由于我对编译器如何将所有内容链接在一起缺乏了解。 我曾尝试过阅读一些教科书,但我的先入之见在我的Java和C#知识上有很大的色彩。 例如,我很难掌握方法等可以在命名空间中定义而不是仅在类定义中定义的事实。 我发现了很多C ++ – > Java / C#指南,但实际上没有其他方法可行。 是否有任何好的资源可以简化Java / C# – > C ++转换,特别是在理解编译过程方面?

是否可以在C#中编写Android应用程序?

我们都知道Android运行Dalvik VM程序。 通常,开发人员用Java编写程序,然后将其编译为Dalvik字节码。 我想知道是否有可能创建一个可以接受C#代码并将其编译为Dalvik字节码的编译器。

在Generic类型参数之前,“out”是什么意思?

我在寻找GroupBy返回类型时看到了一种不熟悉的语法: public interface IGrouping : IEnumerable MSDN来源 我知道方法中有什么意思,但不是在generics界面中。 generics中的含义是什么?