在 C# 中, 类型不能再被命名为 file,否则编译器会报 CS9056 错误,如果非要使用,建议加 @符号。
class file {} // 报错:Error CS9056 class @file {} // 正确当然,@file 这种命名法能避免尽量避免,那么多名字,不要和 file 过不去。
之所以如此,原因是 C# 正在讨论引入一个新的 file 关键字,用于规定类型只能在声明它的文件中使用。
// File1.cs namespace NS; file class Widget { } // File2.cs namespace NS; // 允许 file class Widget { } // File3.cs using NS; // 不允许 var widget = new Widget(); 在上述代码中,File1.cs 和 File2.cs 声明的命名空间都是 NS,但却允许定义相同名称的类 Widget,这是因为 Widget 的可访问性被声明为 file,只在自身文件内有效,因此两个 Widget 实际上是互相不可见的,没有冲突。
而 File3.cs 中引用 Widget 则会出现错误,因为无论是 File1.cs 和 File2.cs 中定义的 Widget,在 File3.cs 中均是不可见的。
| 留言与评论(共有 0 条评论) “” |