草庐IT

编译ffmpeg

全部标签

c# - 为什么可以比较不相关的c#接口(interface)引用而不会出现编译错误?

最近我很惊讶地发现编译器在比较接口(interface)引用方面显然并不严格,我想知道为什么它会这样工作。考虑这段代码:classProgram{interfaceI1{}interfaceI2{}classC1:I1{}classC2:I2{}staticvoidMain(string[]args){C1c1=newC1();C2c2=newC2();I1i1=c1;I2i2=c2;boolx=c1==c2;booly=i1==i2;}}编译器说我无法比较c1==c2,如下所示。类型完全不相关。然而,它确实允许我比较i1==i2。我预计它会因编译时失败而出错,但我惊讶地发现您可以将任

c# - 我认为我的团队在 64 位编译器中发现了一个错误,其他人可以确认或告诉我为什么这是正确的吗?

我有一个关于此可能错误的简单无尘室示例。staticvoidMain(string[]args){boolMyFalse=false;if(MyFalse){thrownewException();}try{inti=0;}catch(Exceptione){Console.Write(e);}Console.Read();}如果在x64或AnyCPU中编译(当prefer32bit在VS2012中设置为false时)如果你在ifblock中放置断点,它总是会被命中。我们在VS2012、VS2010和VS2008中尝试过,它们在64位编译时都触发了ifblock,但在32位中它不会触发

c# - 在 .NET 中,为什么常量在编译时而不是在 JIT 时求值?

今天,当我更改静态类中公开可见常量的值,然后用新编译的版本替换程序集的旧副本时,我有点吃惊。令人惊讶的是,引用程序集的现有程序没有获取常量的新值。也就是说,我没有重新编译可执行文件,而是只是替换了那个程序集。我的实验的完整描述位于Howconstantisaconstant?我承认我对这种行为感到非常惊讶。我明白发生了什么,但我不明白为什么。是否有特殊的技术原因导致无法在JIT时间而不是编译时间获取常量?在某些情况下这样做会破坏事情吗? 最佳答案 常量应该是常量。对于所有时间。常量是诸如pi的值或铅原子中的质子数之类的东西。如果你的

c# - 为什么我必须显式提供泛型参数类型而编译器应该推断类型?

为什么我必须显式提供泛型参数类型,而编译器应该推断类型?publicstaticT2Cast(thisT1arg)whereT2:classwhereT1:class{returnargasT2;}示例用法:objOfTypeT2=objOfTypeT1.Cast();与我希望使用更智能的编译器的用法相比:objOfTypeT2=objOfTypeT1.Cast();或者也许我应该更聪明:-)请注意我提供了返回类型。我不想提供我在其上调用函数的对象,该方法是一个扩展方法。 最佳答案 推理不考虑返回类型;但是,您可以尝试拆分泛型;例如

c# - Visual Studio 调试器 - 有什么方法可以通过调试器访问编译器生成的临时变量?

如果您在Reflector中检查C#代码,您会注意到特殊的编译器生成的局部变量,这些局部变量以CS$X$Y模式命名。这些变量(非正式地)记录在thisanswer中。.有没有办法通过VisualStudio中的监window口或通过VS调试器扩展API查看这些值?我专门询问有关常规VisualStudio调试器的问题,请不要回答说这可以通过windbg/sos/sosex实现——因为这不是我要找的。 最佳答案 不幸的是,C#EE无法做到这一点。这些本地人的名字确实存储在PDB中并且可用。但是,C#EE将在调试期间过滤掉所有临时值以减

c# - 为什么编译器决定 2.3 是 double 而不是十进制?

为什么编译器认为2.3是double的,所以这段代码无法编译:decimalx;x=2.3;//Compilationerror-cannotconvertdoubletodecimal.x=(decimal)2.3//O.k.为什么编译器不这样认为:他要取小数,他给我一个可以是小数的值,所以是小数!为什么这不会出现编译错误:shortx;x=23;//O.K.谁说23不是整数? 最佳答案 这里有很多问题。让我们把它们分解成小问题。Whyistheliteral2.3oftypedoubleratherthandecimal?历史原

c# - Razor View 中 foreach 循环中的 Assembly Not Referenced 编译错误

编辑:我已经检查并尝试了在SE上发现的许多其他程序集未引用问题,但我没有发现很多处理应该是内置程序集的问题(System.Collections.Generic.List)。这使得手动添加或删除引用等变得困难。我正在尝试从API响应构建PartialView。我已确认响应正确且格式正确,我的对象正在正确构建,但是当我生成局部View时,显示的是编译错误。CompilerErrorMessage:CS0012:Thetype'System.Collections.Generic.List`1'isdefinedinanassemblythatisnotreferenced.Youmust

macOS 更新Xcode,UE4编译C++报错variable “LayerNames” set but not used -Wunused-but-set-variable解决方案

一、背景本人在一次苹果macOS系统更新(手贱点了一下AppStore里的全部更新)后,发现虚幻引擎UE4.27的C++项目无法编译通过,报错信息为:variable“LayerNames”setbutnotused[-Werror,-Wunused-but-set-variable]constTArray*LayerNames=&LayersExpression->GetLayerNames();经过翻查社区资料:LayerNameserrorbrickingmyMacprojects-Platform&Builds-UnrealEngineForums外加本人亲自验证,得出如下两种适用于不

c# - 在 Mono 和 .NET 之间拆分的编译器 #if 指令

这个问题在这里已经有了答案:HowcanIconditionallycompilemyC#forMonovs.Microsoft.NET?(2个答案)关闭9年前。我需要为Mac上的Mono和PC上的.NET双重编译一个类库。我想做一些小改动,但我希望使用编译器指令拆分代码。有什么建议吗?

c# - 这是.Net Native 编译和优化中可能存在的错误吗?

我在.NetNative和structs中发现了(可能是)过度优化的问题。我不确定是编译器太激进了,还是我太盲目了,看不出我做错了什么。要重现这一点,请按照下列步骤操作:第1步:在VisualStudio2015Update2中创建一个新的空白通用(win10)应用,目标版本为10586,最小版本为10240。调用项目NativeBug所以我们有相同的命名空间。第2步:打开MainPage.xaml并插入此标签第3步:将以下内容复制/粘贴到MainPage.xaml.csusingSystem;usingSystem.Collections.Generic;namespaceNativ