C#的required關鍵字的具體使用
在 C# 11 中引入了 required 關鍵字,用于強制要求某些屬性或字段在對象初始化時必須被顯式賦值。這一特性增強了代碼的安全性,確保關鍵成員不會被遺漏初始化,同時保持了對象初始化的靈活性(例如使用對象初始化器)。
核心概念
- 作用:標記類或結構體中的屬性/字段為“必須初始化”的成員。
- 強制賦值:創(chuàng)建對象時,必須為所有
required成員提供初始值,否則編譯器報錯。 - 兼容性:可與構造函數(shù)、對象初始化器(
new Type { Prop = value })結合使用。 - 與構造函數(shù)的對比:相比通過構造函數(shù)參數(shù)強制初始化,
required允許更靈活的初始化方式(如按名稱賦值)。
基本用法
1. 定義required成員
public class Person
{
public required string Name { get; set; }
public required int Age { get; set; }
}
2. 初始化時必須賦值
// 正確:通過對象初始化器賦值
var person = new Person { Name = "Alice", Age = 30 };
// 錯誤:缺少 Age 的賦值
var invalidPerson = new Person { Name = "Bob" }; // 編譯錯誤!
與構造函數(shù)的協(xié)作
若構造函數(shù)已初始化 required 成員,需標記 [SetsRequiredMembers] 特性,避免重復賦值:
public class Person
{
public required string Name { get; set; }
public required int Age { get; set; }
[SetsRequiredMembers]
public Person(string name, int age)
{
Name = name;
Age = age;
}
}
// 調用構造函數(shù)時,無需再初始化 required 成員
var person = new Person("Alice", 30);
注意事項
- 適用類型:
required可用于屬性或字段,支持引用類型和值類型。 - 不可省略:未初始化
required成員會導致編譯錯誤。 - 與 Nullable 的協(xié)作:
public required string? OptionalDescription { get; set; } // 允許可為 null 的 required 成員 - 版本要求:需使用 C# 11 或更高版本(.NET 7+)。
使用場景
- 替代多參數(shù)構造函數(shù):當類有大量必填屬性時,避免編寫冗長的構造函數(shù)。
- 明確初始化責任:強制調用方為關鍵屬性提供值,減少運行時錯誤。
- DTO 或配置對象:確保反序列化或配置綁定時必要字段被賦值。
示例:靈活初始化
public class Configuration
{
public required string ApiKey { get; set; }
public int Timeout { get; set; } = 30; // 非 required,可省略(使用默認值)
}
// 初始化時只需賦值 ApiKey
var config = new Configuration { ApiKey = "secret-key" };
通過 required 關鍵字,C# 提供了一種更直觀、安全的方式確保對象初始化的完整性,尤其適用于現(xiàn)代 API 設計和數(shù)據模型定義。
到此這篇關于C#的required關鍵字的具體使用的文章就介紹到這了,更多相關C# required關鍵字內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
淺談C#下winform和JS的互相調用和傳參(webbrowser)
下面小編就為大家?guī)硪黄獪\談C#下winform和JS的互相調用和傳參(webbrowser)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12
C#如何將查詢到的數(shù)據庫里面的數(shù)據輸出到textbox控件
這篇文章主要介紹了C#如何將查詢到的數(shù)據庫里面的數(shù)據輸出到textbox控件問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07
解析在內部循環(huán)中Continue外部循環(huán)的使用詳解
本篇文章是對在內部循環(huán)中Continue外部循環(huán)的使用進行了詳細的分析介紹,需要的朋友參考下2013-05-05

