C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > C# required关键字

C#的required关键字的具体使用

作者:siyun.chen

C#11引入的required关键字强制要求某些属性或字段在对象初始化时必须被显式赋值,增强了代码的安全性和灵活性,本文就来介绍一下C#的required关键字的具体使用,感兴趣的可以了解一下

在 C# 11 中引入了 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" }; // 编译错误!

与构造函数的协作

若构造函数已初始化 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;
    }
}

// 调用构造函数时,无需再初始化 required 成员
var person = new Person("Alice", 30);

注意事项

  1. 适用类型required 可用于属性或字段,支持引用类型和值类型。
  2. 不可省略:未初始化 required 成员会导致编译错误。
  3. 与 Nullable 的协作
    public required string? OptionalDescription { get; set; } // 允许可为 null 的 required 成员
    
  4. 版本要求:需使用 C# 11 或更高版本(.NET 7+)。

使用场景

示例:灵活初始化

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# 提供了一种更直观、安全的方式确保对象初始化的完整性,尤其适用于现代 API 设计和数据模型定义。

到此这篇关于C#的required关键字的具体使用的文章就介绍到这了,更多相关C# required关键字内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文