Tag: 编译器 错误

为什么System.Array不能成为类型约束?

我正在开发一个带有几种不同类型数组的小项目(例如double[] , float[] , int[] 。为了validation/测试/健全,我将其中一些数组打印到控制台我继续。所以我有多个函数,如下所示(本例简化 – 假设我只处理单维数组): void Print(float[] a) // prints an array of floats { for (int i = 0; i < a.Length; i++) { Console.Write(a[i]); } } void Print(double[] a) // prints an array of doubles { for (int i = 0; i < a.Length; i++) { Console.Write(a[i]); } } 我以我的无限智慧认为,我可以通过简单地创建这些函数的通用版本来减少一些代码重复。 […]

如何在属性getter和带有一个参数的方法之间存在歧义?

我不敢相信我以前从未遇到过这个,但为什么我的代码会出现编译器错误? public class Main { public Main() { var ambiguous = new FooBar(1); var isConfused = ambiguous.IsValid; // this call is ambiguous } } public class FooBar { public int DefaultId { get; set; } public FooBar(int defaultId) { DefaultId = defaultId; } public bool IsValid { get { return DefaultId == 0; } } […]