C# 11 新特性:接口中的靜態抽象成員

之前

假設我們有一個非常復雜的數學運算方法:

public?static?int?Calc(int?x,?int?y)?=>?x?+?y;

但是,上述方法只能支持int類型。如果需要傳入其它數字類型,需要再次定義:

public?static?double?Calc(double?x,?double?y)?=>?x?+?y;

對于這種需求,我們更希望采取范型的方式實現:

public?static?T?Calc<T>(T?x,?T?y)?=>?x?+?y;

但是,運算符“+”無法應用于“T”和“T”類型的操作數

dcd36bd255609e9f98725b89ed835027.png

C# 11

引用System.Runtime.Experimental NuGet 包,并且在項目文件中添加<EnablePreviewFeatures>True</EnablePreviewFeatures>

定義如下方法:

public?static?T?Calc<T>(T?x,?T?y)?where??T?:?INumber<T>?=>?x?+?y;

現在,無論傳遞何種數據類型,都可正常執行:

Calc(4,?5);
Calc(4.0,?5.0);

這是因為,我們使用的是System.Runtime.Experimental下定義的數字類型,intdouble都繼承了INumber接口:

570f65398e25114dc105e5b3a44a13b8.png

INumber接口又繼承了IAdditionOperators接口,定義了運算符“+”:

public?interface?IAdditionOperators<TSelf,?TOther,?TResult>?where?TSelf?:?IAdditionOperators<TSelf,?TOther,?TResult>
{public?static?abstract?TResult?operator?+(TSelf?left,?TOther?right);
}

這里就運用了 C# 11 提供的新特性,可在接口中添加靜態抽象成員

此功能的主要場景是在泛型類型中使用數學運算符,因為運算符必須定義為靜態抽象的:

f9a58cc6d58b9497dd5dae286eef9008.png

除此之外,也可以在接口中定義其他靜態成員和靜態屬性:

public?interface?IDemo
{public?static?abstract?string?StaticProperty?{?get;?set;?}
}

添加微信號【MyIO666】,邀你加入技術交流群

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/286195.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/286195.shtml
英文地址,請注明出處:http://en.pswp.cn/news/286195.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

tomcat兩個項目沖突

java.lang.IllegalStateException: Web app root system property already set to different value 最近在搭建項目環境的時候出現了下面的錯誤 java.lang.IllegalStateException: Web app root system property already set to different value: webapp.root [D:/tomcat-5.0.…

四、一般頁面制作《仿淘票票系統前后端完全制作(除支付外)》

一、播放影片影院頁制作 上一節已經做完了首頁所有欄目內容&#xff0c;那么點擊購票后應該出現對應有購票的影院&#xff0c;選擇影院后進入購買票務頁。 首先新建一個頁面命名為播放該影片的影院&#xff1a; 接著復制首頁中的標題欄到播放影片的影院頁中&#xff0c;此時…

SuppressLint黃色警告的原因以及解決辦法

最近在做項目的時候&#xff0c;碰到方法的前面和類的前面有時會出現SuppressLint或者SuppressWarnings這樣的黃色警告&#xff0c;看起來很不舒服&#xff0c;于是上網搜集了一些相關資料。發現這些警告的出現其實是由于我們編寫代碼時的一些不規范的寫法導致&#xff0c;解決…

重磅!win10無法安裝.NET Framework 3.5服務解決辦法(附離線安裝包下載)

安裝CASS測圖軟件之前需要安裝CAD,Win10操作系統安裝CAD時經常會需要.net framework 3.5,win10中默認是沒有安裝該環境的,需要單獨安裝。本文講解Win10系統中在線和離線安裝.net framework 3.5。 CAD 2006+CASS 7.1安裝參考:《Win 10操作系統CAD 2006+CASS 7.1安裝圖文經典…

C語言試題三十六之將s所指字符串中所有下標為奇數位置上的字母轉換為大寫(若該位置上不是字母,則不轉換)。

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 請編寫一個…

數據結構實驗之鏈表二:逆序建立鏈表

數據結構實驗之鏈表二&#xff1a;逆序建立鏈表 Time Limit: 1000MS Memory Limit: 65536KBSubmit StatisticProblem Description 輸入整數個數N&#xff0c;再輸入N個整數&#xff0c;按照這些整數輸入的相反順序建立單鏈表&#xff0c;并依次遍歷輸出單鏈表的數據。Input 第一…

執行yum:Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again...

安裝eple源&#xff0c;在yum clean all&#xff1b;yum makecache 后出現報錯Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again解決辦法&#xff1a;sed -i s/mirrorlist/\#mirrorlist/g epel.repo epel-testing.reposed -i s/\#…

700行無用 純 CSS 祝考生 金榜高粽《1_bit 的無用 CSS 代碼 》

今天才想起來這回事&#xff0c;沒辦法就急急忙忙的趕工一下&#xff0c;接下來我就畫一下這個海報試試手了&#xff1a; 一、背景制作 1.1 準備工作 先給整個網頁制作一個布局吧&#xff0c;直接 flex 搞定&#xff0c;并且使其居中 justify-content、align-items 都要賦值為…

【CASS精品教程】win10安裝CAD+CASS過程中出現的錯誤問題及解決辦法集錦

文章目錄 1. 無法安裝2. 提示DWF Viewer、AutoCAD2008未安裝3. 安裝完成后一直出現如下窗口4. Win10 64位 cass9.1+cad2008打開后出現Frame主框架程序沒有加載。5. 注冊程序無法運行,提示由于無法安裝此service pack。1. 無法安裝 解決辦法:開啟Administrator,以管理員身份…

(01).NET MAUI實戰 建項目

1.概要本系列文章將會針對.NET MAUI實戰開發的一些內容&#xff0c;會長期不間斷更新我了解學習到的內容。當學習新的軟件開發技術時&#xff0c;都會從基礎建項目開始MAUI也不例外。ref&#xff1a;https://docs.microsoft.com/zh-cn/dotnet/maui/get-started/first-app?pivo…

Android Studio 引用aar包 更新后找不到新增的方法問題(踩坑)

明明已經更新了aar文件&#xff0c;但死活找不到新增的方法&#xff0c;代碼提示里也找不到新增的方法名&#xff0c;但編譯能編譯&#xff0c;運行也一切正常&#xff0c;只是IDE一直提示錯誤&#xff0c;有強迫癥的小猿好幾天都想不明白。 其間有高手指教說&#xff1a;“那…

VMware Workstation與VMware vSphere的區別

在學完vSphere后&#xff0c;想起了VMware Workstation。這兩個都是虛擬化的東西&#xff0c;這兩者到底有什么本質的不同呢&#xff1f;順著我的思路我開始將所學過的進行檢索期望從中尋到一絲半點的線索。很快大腦中建立了兩個對他們明顯的標簽 VMware Workstation&#xff1…

C語言試題三十七之求除一個2×m整型二維數組中最大元素的值,并將此值返回調用函數。

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 請編寫一個…

RSA加密解密

http://files.cnblogs.com/files/liuJava/rsa.zip、 直接上工具類 JAR 和前臺JS 都在上面的鏈接里 package my.tools.security;import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.Obj…

Atitit.js圖表控件總結

Atitit.js圖表控件總結 1. 為什么要使用圖表1 2. 圖表分類1 3. 數據可視化的優點1 4. 流行的js圖表類庫1 5. 參考2 1. 為什么要使用圖表 因為要可視化 2. 圖表分類 條形圖、柱狀圖、折線圖和餅圖是圖表中四種最常用的基本類型 分類 條形圖、柱狀圖、折線圖和餅圖是圖表中四種最…

Matlab圖像處理函數大全(建議收藏)

文章目錄 第1章: 圖像顯示與圖像文件輸入輸出函數第2章: 圖形繪制第3章: 圖像類型和類型轉換第4章: 圖形用戶界面工具第5章: 空間變換和圖像配準第6章: 圖像分析和統計第7章: 圖像代數運算第8章: 圖像增強第9章: 圖像去模糊第10章: 線性濾波和變換第11章: 形態學操作…

Asp.net 批量導入Excel用戶數據功能加強版

平時我們用Asp.net導入用戶&#xff0c;一般是提供一個用戶Excel表的模板&#xff0c;實際導入數據時并非有些人愿意按你的模版制表&#xff0c;因此對Asp.net導入功能進行加強&#xff0c;可以導入非模版化的Excel數據&#xff0c;并且支持一次處理多個Sheet表&#xff0c;方便…

C語言試題三十八之將s所指字符串中除了下標為偶數、同時ascii值也為偶數的字符外,其余的全都刪除;串中剩余字符所形成的一個新串放在t所指的一個數組中。

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 請編寫一個…

C#+Signalr+Vue實現B站視頻自動回復評論,當一個最懶程序員!

Part1前言前幾天刷到了程序員魚皮的自動回復視頻評論的視頻&#xff0c;于是我也想來試試&#xff01;Part2開始第一步打開想要自動回復評論的視頻url&#xff0c;打開調試模式&#xff01;然后找到可以觸發評論的網絡請求可以看到我們的oid是可以唯一確定視頻的id,那么這個oid…

一張圖不用,純CSS 做個生日賀卡

朋友生日了&#xff0c;直接畫&#xff0c;炫技并且表示本人閑的全身疼才會去拿CSS畫畫&#xff0c;以此嘲弄對方的加班&#xff1a; 既然賀卡做出來了&#xff0c;那就順便介紹一下賀卡制作流程吧&#xff0c;其實也不是什么技術&#xff0c;也就是CSS 拼拼拼就可以了&#…