C# 11 中不再允许类型被命名为 file

在 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.csFile2.cs 声明的命名空间都是 NS,但却允许定义相同名称的类 Widget,这是因为 Widget 的可访问性被声明为 file,只在自身文件内有效,因此两个 Widget 实际上是互相不可见的,没有冲突。

File3.cs 中引用 Widget 则会出现错误,因为无论是 File1.csFile2.cs 中定义的 Widget,在 File3.cs 中均是不可见的。

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章