C#11新特性之file關(guān)鍵字的用法教程
C#11 添加了文件作用域類型功能:一個新的 file 修飾符,可以應(yīng)用于任何類型定義以限制其只能在當(dāng)前文件中使用。這樣,我們可以在一個項目中擁有多個同名的類。
示例
新建一個控制臺程序,添加兩個類,分別為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類。但它們只在自己的文件中有效。
這時,我們調(diào)用兩個文件對應(yīng)的方法,可以正常輸出!
using ConsoleApp; Console.WriteLine(GetFileWidget1.GetString()); Console.WriteLine(GetFileWidget2.GetString());
file不可以與其他修飾符一起使用
需要注意的是:從C# 11開始,file
關(guān)鍵字是類型修飾符,這也意味著它不能與其他修飾符一起使用,比如public
、internal
、private
等。
file可以修飾的類型
file
可以在以下類型中使用。
- class
- struct
- interface
- enum
- delegate
- record
- record struct
file 不可修飾的類型
file修飾符不適用于嵌套在父類型中的類型。它也不適用于方法屬性、事件和字段,但語言設(shè)計說明解釋說:“為非類型文件范圍的成員留出設(shè)計空間,以便以后出現(xiàn)。”
例如:
file interface IFileWidget { file void Widget(); }
這時會有報錯:
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());
沒有任何問題!
總結(jié)
namespace仍然是避免類型名稱沖突的首選方法。
到此這篇關(guān)于C#11新特性之file關(guān)鍵字的用法教程的文章就介紹到這了,更多相關(guān)C#11 file關(guān)鍵字內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#調(diào)用mmpeg進行各種視頻轉(zhuǎn)換的類實例
這篇文章主要介紹了C#調(diào)用mmpeg進行各種視頻轉(zhuǎn)換的類,實例分析了C#調(diào)用mmpeg操作視頻文件的技巧,非常具有實用價值,需要的朋友可以參考下2015-03-03C#中foreach循環(huán)對比for循環(huán)的優(yōu)勢和劣勢
循環(huán)語句是編程的基本語句,在C#中除了沿用C語言的循環(huán)語句外,還提供了foreach語句來實現(xiàn)循環(huán),下面這篇文章主要給大家介紹了關(guān)于C#中foreach循環(huán)對比for循環(huán)的優(yōu)勢和劣勢,需要的朋友可以參考借鑒,下面來一起看看吧。2017-09-09C#中的out參數(shù)、ref參數(shù)和params可變參數(shù)用法介紹
這篇文章介紹了C#中的out參數(shù)、ref參數(shù)和params可變參數(shù)用法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-01-01C# Winform中實現(xiàn)主窗口打開登錄窗口關(guān)閉的方法
這篇文章主要介紹了C# Winform中實現(xiàn)主窗口打開登錄窗口關(guān)閉的方法,這在需要用戶名密碼的軟件項目中是必用的一個技巧,要的朋友可以參考下2014-08-08