泛型是在 C# 2.0 版本中新增的,是該語言中最重要的概念之一。它們使您能夠編寫在編譯時類型安全的可重複使用、高效能程式碼。使用泛型,您可以在程式碼中使用某種類型,而無需事先了解該類型。
泛型在 .NET 中的許多地方使用,包括集合、委託和非同步程式碼。使用泛型,您不需要事先知道集合的大小,並且可以將泛型與任何元素類型一起使用,甚至是特定於您的程式碼的自訂資料類型。 C# 提供對泛型類型(類別、介面等)和泛型方法的支援。
在泛型中,您有型別參數和型別參數。這類似於具有參數的方法,您可以將參數傳遞給該方法。
泛型類型
宣告泛型類型的語法由位於尖括號中的型別參數所組成。類型的名稱。例如,Locator
public class Locator<T> { }
要建立 Locator
var stringLocator = new Locator<string>();
您可以在類別方法上使用類型參數 (T),如下例所示。
public class Locator{ public IList Items { get; set; } public T Locate(int index){ return Items[index]; } } var stringLocator = new Locator<string>(); string item = stringLocator.Locate(2);
泛型的另一個好處是編輯器提供的 IntelliSense。當您在 Visual Studio 或 VS Code 中鍵入 stringLocator.Locate(4) 並將滑鼠懸停在方法名稱上時;它會顯示它傳回一個字串而不是 T。如果您嘗試將結果指派給字串以外的任何類型,編譯器將引發錯誤。例如,
// Error: Cannot implicitly convert type 'string' to 'int' [c-sharp]csharp(CS0029) int item = stringLocator.Locate(2);
從泛型基底型別或泛型介面繼承時,泛型型別可以使用型別形參作為型別實參。通用 LinkedList
public class LinkedList<T> : IEnumerable<T>
泛型方法
泛型方法只是宣告類型參數的方法,您可以在方法內部使用該類型參數並將其用作參數和傳回類型。在下面的範例中,Swap
public class Swapper{ public T Swap<T>(T first, T second){ T temp = first; first = second; second = temp; return temp; } }
與泛型類型一樣,當您呼叫泛型方法時,它將傳回一個強類型變數。
var swapper = new Swapper(); int result = swapper.Swap<int>(5, 3);
可以有多個通用參數。 System.Collections.Generic 命名空間中的 Dictionary 類別有兩個類型參數,即鍵和值。
public class Dictionary<TKey, TValue>
最後,了解什麼是通用的很重要。對於型別來說,除了列舉之外,一切都可以是泛型的。其中包括-
- 類別
- 結構
- 介面
- #委託
對於類型成員,只有方法和巢狀類型可以是泛型的。下列成員不能是通用的-
- 欄位
- #屬性
- 索引器 ##建構子
- ##事件 li>
- #終結器
- 範例
現場示範
using System; using System.Collections.Generic; class Program{ static void Main(){ var stringLocator = new Locator<string>(){ Items = new string[] { "JavaScript", "CSharp", "Golang" } }; string item = stringLocator.Locate(1); Console.WriteLine(item); // CSharp var swapper = new Swapper(); int a = 5, b = 3; int result = swapper.Swap<int>(ref a, ref b); Console.WriteLine($"a = {a}, b = {b}"); } } public class Locator<T>{ public IList<T> Items { get; set; } public T Locate(int index){ return Items[index]; } } public class Swapper{ public T Swap<T>(ref T first, ref T second){ T temp = first; first = second; second = temp; return temp; } }
輸出
CSharp a = 3, b = 5
以上是解釋泛型在 C# 中的工作原理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

C#.NET開發的最新動態和最佳實踐包括:1.異步編程提高應用響應性,使用async和await關鍵字簡化非阻塞代碼;2.LINQ提供強大查詢功能,通過延遲執行和表達式樹高效操作數據;3.性能優化建議包括使用異步編程、優化LINQ查詢、合理管理內存、提升代碼可讀性和維護性、以及編寫單元測試。

如何利用.NET構建應用?使用.NET構建應用可以通過以下步驟實現:1)了解.NET基礎知識,包括C#語言和跨平台開發支持;2)學習核心概念,如.NET生態系統的組件和工作原理;3)掌握基本和高級用法,從簡單控制台應用到復雜的WebAPI和數據庫操作;4)熟悉常見錯誤與調試技巧,如配置和數據庫連接問題;5)應用性能優化與最佳實踐,如異步編程和緩存。

C#在企業級應用、遊戲開發、移動應用和Web開發中均有廣泛應用。 1)在企業級應用中,C#常用於ASP.NETCore開發WebAPI。 2)在遊戲開發中,C#與Unity引擎結合,實現角色控制等功能。 3)C#支持多態性和異步編程,提高代碼靈活性和應用性能。

C#和.NET適用於Web、桌面和移動開發。 1)在Web開發中,ASP.NETCore支持跨平台開發。 2)桌面開發使用WPF和WinForms,適用於不同需求。 3)移動開發通過Xamarin實現跨平台應用。

C#.NET生態系統提供了豐富的框架和庫,幫助開發者高效構建應用。 1.ASP.NETCore用於構建高性能Web應用,2.EntityFrameworkCore用於數據庫操作。通過理解這些工具的使用和最佳實踐,開發者可以提高應用的質量和性能。

如何將C#.NET應用部署到Azure或AWS?答案是使用AzureAppService和AWSElasticBeanstalk。 1.在Azure上,使用AzureAppService和AzurePipelines自動化部署。 2.在AWS上,使用AmazonElasticBeanstalk和AWSLambda實現部署和無服務器計算。

C#和.NET的結合為開發者提供了強大的編程環境。 1)C#支持多態性和異步編程,2).NET提供跨平台能力和並發處理機制,這使得它們在桌面、Web和移動應用開發中廣泛應用。

.NETFramework是一個軟件框架,C#是一種編程語言。 1..NETFramework提供庫和服務,支持桌面、Web和移動應用開發。 2.C#設計用於.NETFramework,支持現代編程功能。 3..NETFramework通過CLR管理代碼執行,C#代碼編譯成IL後由CLR運行。 4.使用.NETFramework可快速開發應用,C#提供如LINQ的高級功能。 5.常見錯誤包括類型轉換和異步編程死鎖,調試需用VisualStudio工具。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。