Tag: compiler errors

为什么我会在创建和返回新结构时遇到此错误?

编译此代码时出错: using System; public struct Vector2 { public event EventHandler trigger; public float X; public float Y; public Vector2 func() { Vector2 vector; vector.X = 1; vector.Y = 2; return vector; // error CS0165: Use of unassigned local variable ‘vector’ } } 您好! 编译器说:“使用未分配的局部变量’vector’”并指向返回值。 在我看来,Vector2成为一个引用类型(没有事件成员它正常行事)。 怎么了?

ReflectionTypeLoadException

当我尝试构建My WF项目时,我收到此错误。 我发现删除System.Activities.Presentation可以解决此错误。 如果我在运行时收到此错误,我可以调查LoaderExceptions以找出根问题。 当我在编译时遇到这个错误时怎么办? 或者,有人知道如何解决这个特殊问题吗? 扩展名“Microsoft.Activities.Build.Validation.ValidationBuildExtension”引发了类型为“System.Reflection.ReflectionTypeLoadException”的exception:’无法加载一个或多个请求的类型。 检索LoaderExceptions属性以获取更多信息。’。

C#.NET:当属性设置为无效值时,是否可以创建编译时警告?

这只是一个可行性问题。 我知道,如果我说 int myInt = “5”; 我收到编译时错误。 我想要做的是在对象上创建编译时错误或警告。 所以假设我有一个带有一些属性的自定义对象。 其中一个属性不能为null,否则解决方案将无法编译: public static class NoNullObjects { //NotNullable public static NotNullObject {get; set;} } MyClass.cs: Line#55 NoNullObjects.NotNullObject = null; 当我建立时我想看到: Error: NotNullObject cannot be set to null. MyClass.cs Line 55. 有没有办法做到这一点?

方法中的可选参数不是使用Rectangle编译时常量错误

我有一个方法,我想使用一个Rectangle可选参数,默认值为(1,1,1,1)。 void Method(int i, int j = 1, Rectangle rect = new Rectangle(1,1,1,1)) {} //error 我该如何解决这个问题? (我正在使用XNA,所以它是一个Microsoft.Xna.Framework.Rectangle 。)

C#:任何抑制编译器错误的方法都类似于抑制警告消息?

我有以下代码生成编译器错误: Boolean IConvertible.ToBoolean(IFormatProvider provider) { ThrowHelper.ThrowInvalidCast(typeof(MyType), typeof(Boolean)); } 编译器抱怨并非所有代码路径都返回一个值。 这里的问题是ThrowHelper 总是会抛出一个错误。 它是一个静态类,调用静态方法。 我知道在ThrowHelper调用之后我可以用一个愚蠢的“return true”来满足编译器,但这似乎是不必要的代码。 我知道我可以抑制警告消息,但是当我尝试使用SuppressMessageAttribute它并没有阻止编译器抱怨。 有没有办法只为这种方法抑制这个错误?

试图重现“必须声明一个正文”编译器错误

我正在尝试使用网站中给出的确切代码重现C#编译器错误CS0840 : class Test36 { public int myProp { get; } // CS0840 // to create a read-only property // try the following line instead public int myProp2 { get; private set; } } public Form1() { InitializeComponent(); Test36 test = new Test36(); } 我使用Visual Studio Community 2015在.NET 4.0上运行它。令人惊讶的是,我无法重现它。 编译器不会抛出任何错误: 为什么编译器没有抛出任何错误?

扩展方法调用不编译,但静态方法调用相同的代码确实编译

库A调用库B使用C#扩展方法。 我从C#编译器得到了一个奇怪的错误: 类型’System.Windows.Forms.Control’在未引用的程序集中定义。 您必须添加对程序集’System.Windows.Forms,Version = 4.0.0.0的引用 库A或B都不依赖于System.Windows.Forms.Control ,也没有任何依赖于System.Windows.Forms.Control的依赖关系。 System.Windows.Forms.Control仅从同一解决方案中的另一个项目引用。 奇怪的是,如果我将调用语法更改为静态方法,它将成功编译。 //static method syntax works fine var leads = SourceLeadConfigurationHelper.GetLeads(enLeadSystem); //extension method syntax cause error //error The type ‘System.Windows.Forms.Control’ is defined in an assembly that is not referenced. var leads = enLeadSystem.GetLeads(); 扩展方法如下所示: public static class SourceLeadConfigurationHelper { public static IList GetLeads(this LeadSystem leadSystem); public static […]

LINQ to Entities无法识别方法’System.String ToString(Int32)’

嗨,我正在使用linq查询抛出错误LINQ到实体无法识别方法’System.String ToString(Int32)’方法,并且此方法无法转换为商店表达式。 List resultMap = (from item in mapResult select Convert.ToString(item.ResultDE)).ToList(); 错误是抛出以下声明 List resultList = (from result in db.Result_DE where result.IsActive == “1” && resultMap.Contains(Convert.ToString(Convert.ToInt32(result.ID))) select result).ToList(); 请告诉我编写此查询的正确方法。

编译时出错:“预期的类,委托,枚举,接口或结构”

这段代码有什么问题? 此程序旨在复制文件并通过电子邮件发送到电子邮件地址,但事实并非如此。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net; using System.Net.Mail; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { } } public […]

C# – 编译器错误 – 将int 赋给object

namespace ConsoleApplication1 { class Program { static void Main(string[] args) { object[] obj = new object[3]; obj[0] = new object(); obj[1] = “some string”; obj[2] = 10; string[] strings = new string[] { “one”, “two”, “three” }; obj = strings; //—> No Error here, Why ? int[] ints = new int[] { 1, 2, 3 […]