Tag: 编译器 构造

System.Diagnostics中找不到进程类? (System.dll中???)

我正在使用.NET Framework 3.5,我已经引用了所有程序集,我已经仔细检查过所有内容,但仍然存在这种恼人的错误 CS0234: The type or namespace name ‘Process’ does not exist in the namespace ‘System.Diagnostics’ (are you missing an assembly reference?) (CS0234) (Proj1) 根据MSDN和其他各种来源,Process类绝对位于System.Diagnostics命名空间的System.dll中。 那么世界上的问题是什么?

方法隐藏如何在C#中起作用? (第二部分)

打印以下程序 A:C(A,B) B:C(A,B) (正如它应该) public interface I { string A(); } public class C : I { public string A() { return “A”; } public string B() { return “B”; } } public class A { public virtual void Print(C c) { Console.WriteLine(“A:C(” + cA() + “,” + cB() + “)”); } } public class […]

为什么不允许使用重新分配的集合初始值设定项?

我一直认为它在两方面都很好。 然后做了这个测试并意识到它不允许重新分配: int[] a = {0, 2, 4, 6, 8}; 工作正常但不是: int [ ] a; a = { 0, 2, 4, 6, 8 }; 这有什么技术原因吗? 我想我会在这里问一下,因为这种行为是我直觉所期待的。

为什么从int到uint的隐式转换有效?

使用Casting null并不能作为灵感编译,而是来自Eric Lippert的评论: 这表明了一个有趣的案例。 “uint x =(int)0;” 即使int不能隐式转换为uint,也会成功。 我们知道这不起作用,因为无法将object分配给string : string x = (object)null; 但这确实如此,但直觉上它不应该: uint x = (int)0; 当int不能隐式转换为uint时,为什么编译器允许这种情况?