C#11新特性之file关键字的用法教程 chatgpt是什么意思

   2023-02-09 学习力0
核心提示:目录示例file不可以与其他修饰符一起使用file可以修饰的类型file 不可修饰的类型file 可以有一个或多个同名类总结C#11 添加了文件作用域类型功能:一个新的 file 修饰符,可以应用于任何类型定义以限制其只能在当前文件中使用。这样,我们可以在一个项目中拥

C#11 添加了文件作用域类型功能:一个新的 file 修饰符,可以应用于任何类型定义以限制其只能在当前文件中使用。这样,我们可以在一个项目中拥有多个同名的类。

示例

新建一个控制台程序,添加两个类,分别为File1.cs和File2.cs

//File1.cs
namespace ConsoleApp
{
    file static class FileWidget
    {
        public static string Widget() => "File1";
    }
    static class GetFileWidget1
    {
        internal static string GetString()=> FileWidget.Widget();
    }
}
//File2.cs
namespace ConsoleApp
{
    file static class FileWidget
    {
        public static string Widget() => "File2";
    }
    static class GetFileWidget2
    {
        internal static string GetString() => FileWidget.Widget();
    }
}

两个文件中,定义了相同的FileWidget类。但它们只在自己的文件中有效。

这时,我们调用两个文件对应的方法,可以正常输出!

using ConsoleApp;

Console.WriteLine(GetFileWidget1.GetString());
Console.WriteLine(GetFileWidget2.GetString());

C#11新特性之file关键字的用法教程

file不可以与其他修饰符一起使用

需要注意的是:从C# 11开始,file关键字是类型修饰符,这也意味着它不能与其他修饰符一起使用,比如publicinternalprivate 等。

file可以修饰的类型

file可以在以下类型中使用。

  • class
  • struct
  • interface
  • enum
  • delegate
  • record
  • record struct

file 不可修饰的类型

file修饰符不适用于嵌套在父类型中的类型。它也不适用于方法属性、事件和字段,但语言设计说明解释说:“为非类型文件范围的成员留出设计空间,以便以后出现。”

例如:

file interface IFileWidget
    {
        file void Widget();
    }

这时会有报错:

C#11新特性之file关键字的用法教程

file 可以有一个或多个同名类

在一个项目中,可以有一个internal级别类,同时可以拥有一个或多个file级别的同名类。 唯一的缺点是文件类不能在公共类中使用。

例如,我们修改一下File1.cs

namespace ConsoleApp
{
    file static partial class FileWidget
    {
        public static string Widget() => "File1";
    }
    file static partial class FileWidget
    {
        public static string GetWidget() => "File";
    }
    static class GetFileWidget1
    {
        internal static string GetString()=> FileWidget.Widget();
        internal static string GetString2()=> FileWidget.GetWidget();
    }
}

控制台输出一下:

using ConsoleApp;

Console.WriteLine(GetFileWidget1.GetString());
Console.WriteLine(GetFileWidget1.GetString2());
Console.WriteLine(GetFileWidget2.GetString());

C#11新特性之file关键字的用法教程

没有任何问题!

总结

namespace仍然是避免类型名称冲突的首选方法。

原文地址:https://www.cnblogs.com/gmval/p/16980500.html
 
标签: C#11 file 关键字
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 使用.NET7和C#11打造最快的序列化程序-以MemoryPack为例
    使用.NET7和C#11打造最快的序列化程序-以Memory
    译者注本文是一篇不可多得的好文,MemoryPack 的作者 neuecc 大佬通过本文解释了他是如何将序列化程序性能提升到极致的;其中从很多方面(可变长度、字符串、集合等)解释了一些性能优化的技巧,值得每一个开发人员学习,特别是框架的开发人员的学习,一定能让
    02-09
  • C#11 file关键字 cctv5体育节目表
    C#11 file关键字 cctv5体育节目表
    C#11添加了文件作用域类型功能:一个新的file修饰符,可以应用于任何类型定义以限制其只能在当前文件中使用。这样,我们可以在一个项目中拥有多个同名的类。通过下面的项目显示,该项目包含两个名为Answer的类。 文件File1.cs中namespace ConsoleApp11{file
    02-08
点击排行