You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#的record类型中创建多个构造函数?

C# record类型添加多构造函数的实现方法

实现方式1:保留原位置声明的主构造函数

你定义的是位置式record,所有自定义构造函数必须链式调用自动生成的主构造函数,传入对应参数的默认值即可实现无参构造:

public record Person(int Id, string FirstName, string LastName)
{
    // 自定义无参构造,调用主构造传入默认值
    public Person() : this(default, string.Empty, string.Empty)
    {
        // 此处可添加额外初始化逻辑
    }
}

这种写法下,位置声明的Id、FirstName、LastName属性默认是init-only的,仅能在构造阶段赋值,符合record的不可变设计。


实现方式2:和普通class一致的显式属性声明

如果需要属性支持后续修改,不需要默认的不可变特性,可以放弃位置式主构造的写法,和你写普通class的逻辑完全一致:

public record Person
{
    public int Id { get; set; }
    public string FirstName { get; set; } = string.Empty;
    public string LastName { get; set; } = string.Empty;

    public Person()
    {
        
    }

    public Person(int id, string firstName, string lastName)
    {
        Id = id;
        FirstName = firstName;
        LastName = lastName;
    }
}

补充说明

你可以根据业务需求选择对应写法,两种写法都支持任意数量的构造函数重载,只要保证自定义构造最终都会调用到已定义的合法构造即可。

内容的提问来源于stack exchange,提问作者Nadar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 22:15:07