日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# using static 声明

發布時間:2023/12/4 C# 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# using static 声明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

許多實際的擴展可以通過擴展方法來實現,并非所有實際的擴展都有可以擴展的類型。對于某些場景,簡單的靜態方法比較適合。為了更容易調用這些方法,可以使用 using static 聲明除去類名。

例如,如果打開了 System.Console?

using static System.Console;

可以把下面的代碼

Console.WriteLine("Hello World!");

改為

WriteLine("Hello World!");

在使用此聲明之后,就可以使用類 Console 的所有靜態成員,如 WriteLine、Write、ReadLine、Read、Beep 等,而不需要編寫 Console 類。只需要確保在打開其他類的靜態成員時不要陷入沖突,或者在使用靜態方法時不要使用基類的方法。

下面看一個實際的例子。高階函數以函數作為參數,或者返回一個函數,或者返回兩個函數。在處理函數時,可以將兩個函數合并到一個函數中。

為此可以使用Compose 方法,如下面的代碼片段所示:

public?static?class?FunctionalExtensions {//...public?static?Func<T1,?TResult>?Compose<T1,?T2,?TResult>(Func<T1,?T2>?fl,?Func<T2,?TResult>?f2) =>?a?=>?f2(f1(a)); }

該泛型方法定義了三個類型參數和兩個委托類型 Func 的參數。請記住,委托 Func<T,TResult>引用了一帶有單個參數的方法,其返回類型可以是不同的類型。Compose 方法接受兩個 Func 參數,把兩個方法組合到一個方法中。傳遞給Compose 的第一個方法(f1)可以有兩個不同的類型,一個用于輸入 T,另一個用于輸出(T2),而傳遞的第二個方法(f2)所需要的輸入類型(T2)與第一個方法的輸出類型(T2)相同,并且可以有不同的輸出類(TResult)。Compose 方法本身返回一個 Func 委托,其輸入類型與第一個方法相同(T),輸出類型與第二個方相同(TResult)。實現可能看起來有點可怕,因為后面跟著連續兩個 lambda 操作符。理解了方法返回的內容(一個方法)時,這個構造就將變得清晰。返回的方法是 Func<T1,TResult>。在第一個 lambda 操作符之后,=>f2(f1(2));定義了這個方法。變量的類型為 T1,返回的方法類型為 TResult,與 f2 返回的結果類型相同,f2 以輸入作為參數接收 f1。

要使用 Compose 方法,首先創建兩個委托 f1 和 f2,在輸入中添加 1 或 2。這些委托會與 Compose 方法相結合。由于 usingstatic 聲明打開了類 FunctionalExtensions 的靜態成員,所以可以不使用類名來調用 Compose 方法。在使用 Compose 方法創建 f3之后,就調用 f3 方法:

using System; using static System.Console; using static UsingStatic.FunctionalExtensions; namespace UsingStatic {class Program{static void Main(){//...Func<int,?int>?f1?=?x?=>?x?+?1;Func<int, int> f2 = x => x + 2;Func<int,?int> f3 = Compose(f1, f2);var?xl?= f3(39);?WriteLine(x1);//...}} }

寫入控制臺的結果當然是 42。

聲明 Compose 方法時,參數類型可以在輸入和輸出之間有所不同。在下面的代碼片段中,傳遞給 Compose 方法的第一個方法接收一個字符串,并返回 Person 對象;第二個方法接收 Person 并返回一個字符串。如果編譯器不能從變量和返回類型中識別參數類型,就必須指定具體的委托類型,方法是接收字符串并返回一個 Person。只有變量名,并不能幫助編譯器確定它的類型。通過傳遞給 Compose 方法的第二個方法,顯然,輸入的類型與第一個方法返回的類型相同,因此不需要指定類型。在調用Compose 方法之后,變量 greetPerson 是兩個輸入方法的組合:

var greetPerson = Compose(new?Func<string,?Person>(name?=>?new?Person(name)),person?=>?$"Hello,?{person.FirstName}");?WriteLine(greetPerson("Mario?Andretti"));

在WriteLine 方法中使用字符串 Mario Andretti 調用greetPerson 方法將字符串 Hello,Mario 寫入控制臺。

總結

以上是生活随笔為你收集整理的C# using static 声明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。