Tag: 编译器错误

为什么C#编译器允许在IEnumerable <T>和TAlmostAnything之间进行显式转换?

下面的代码给你一个编译器错误,如你所期望的那样: List<Banana> aBunchOfBananas = new List<Banana>(); Banana justOneBanana = (Banana)aBunchOfBananas; 但是,使用IEnumerable<Banana> ,您只会得到一个运行时错误。 IEnumerable<Banana> aBunchOfBananas = new List<Banana>(); Banana justOneBanana = (Banana)aBunchOfBananas; 为什么C#编译器允许这样做?

为什么是 ;; 允许在局部variables声明之后,而不是在一个字段声明之后?

我看到这种奇怪的行为,我不知道这是否有一个合理的解释: 当我在一个函数的局部variables中加上一个额外的分号时, public void MyMethod () { int a = 1;; Console.WriteLine(a); //dummy } 它编译,但它表明它是多余的。 但是当我做到这一点(也是偶然),我得到了一个错误(编译): 题 这个领域的限制是否有任何理由? 铌我已经知道另一个限制性的事情,不允许var与字段。 但这里有些不同

C# – 不能隐式地将List <Product>转换为List <IProduct>

我有我所有的接口定义项目:RivWorks.Interfaces 我有一个项目,我定义了具体的实践:RivWorks.DTO 我已经做了几百次之前,但由于某种原因,我现在得到这个错误: 不能将types'System.Collections.Generic.List <RivWorks.DTO.Product>'隐式转换为'System.Collections.Generic.List <RivWorks.Interfaces.DataContracts.IProduct>' 接口定义(缩写): namespace RivWorks.Interfaces.DataContracts { public interface IProduct { [XmlElement] [DataMember(Name = "ID", Order = 0)] Guid ProductID { get; set; } [XmlElement] [DataMember(Name = "altID", Order = 1)] long alternateProductID { get; set; } [XmlElement] [DataMember(Name = "CompanyId", Order = 2)] Guid CompanyId { get; set; } … } […]

Xcode – configure:error:在$ PATH中找不到可接受的C编译器

从头开始重build一个mac。 安装xcode和rvm,然后尝试安装ruby,但他们都给我: Error running ' ./configure –prefix=/Users/durrantm/.rvm/rubies/ruby-1.9.3-p125 –enable-shared –disable-install-doc –with-libyaml –with-opt-dir=/Users/durrantm/.rvm/usr ', please read /Users/durrantm/.rvm/log/ruby-1.9.3-p125/configure.log There has been an error while running configure. Halting the installation. Michaels-MacBook-Air:~ durrantm$ 日志有: checking for gcc… no checking for cc… no checking for cl.exe… no configure: error: in `/Users/durrantm/.rvm/src/ruby-1.9.2-p290': configure: error: no acceptable C compiler found in $PATH 我需要gcc […]

多重返回语句没有编译器错误

这是一个采访问题: public class Demo { public static void main(String[] args) { System.out.println(foo()); } static String foo() { try { return "try …"; } catch (Exception e) { return "catch …"; } finally { return "finally …"; //got as result } } } 我的问题是为什么没有编译时错误。 当我在finally块中有return语句的时候,它肯定会从finally返回而不是try和catch块。 我试图用-Xlint选项编译这段代码,它给出了一个警告。 warning: [finally] finally clause cannot complete normally

“ClickOnce不支持请求执行级别requireAdministrator”。

所以我正在写一个需要访问registry的应用程序。 我没有触及任何构build设置,希望在添加其他触摸(如描述或名称)之前使其工作。 突然之间,我得到一个不会消失的错误。 ClickOnce does not support the request execution level 'requireAdministrator'. 现在,我没有在这个应用程序中触及ClickOnce。 我所做的只是包含一个请求这些权限的清单文件。 我现在的问题是,这个错误不会消失,我不能编译我的程序。 有什么build议在做什么? (旁注:我即将上床,明天下午我会检查一下)。

Eclipse如何创build一个没有解决的编译问题的类?

当我尝试编译这个类与javac,我得到一个编译错误,Test.class不创build。 public class Test { public static void main(String[] args) { int x = 1L; // <- this cannot compile } } 但是当我在Eclipse中创build这个类时,我可以看到Test.class出现在target / classes中。 当我尝试从java.exe的命令行运行这个类,我得到 线程“main”中的exceptionjava.lang.Error:未解决的编译问题: types不匹配:不能从long转换为int Eclipse是否使用自己特殊的Java编译器创build一个破损的.class? java.exe如何知道.class中的复杂问题?

为什么gcc允许将parameter passing给定义为无参数的函数?

我不明白为什么这个代码编译? #include <stdio.h> void foo() { printf("Hello\n"); } int main() { const char *str = "bar"; foo(str); return 0; } gcc甚至不会抛出一个警告,我传递给foo()的参数太多。 这是预期的行为?

C ++中额外的限定错误

我有一个成员函数,定义如下: Value JSONDeserializer::ParseValue(TDR type, const json_string& valueString); 当我编译源代码时,我得到: 错误:额外资格'JSONDeserializer ::'在成员'ParseValue' 这是什么? 我如何删除这个错误?

为什么我不能在lambdaexpression式中使用空传播操作符?

我经常在我的代码中使用空传播操作符,因为它给了我更多的可读代码,特别是在长查询中,我不必对每个使用的类都进行空检查。 下面的代码抛出一个编译错误,我们不能在lambda中使用null传播运算符。 var cnt = humans.AsQueryable().Count(a => a.House?[0].Price == 5000); 错误 : 错误CS8072expression式树lambda可能不包含空传播运算符。 C#可以很容易地将上面的代码翻译成下面的代码,如果真的不能做任何事情! var cnt = humans.AsQueryable().Count(a => a.House != null && a.House[0].Price == 5000); 我很好奇,为什么C#什么都不做,只是抛出一个编译器错误?