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

能否在Record位置参数中使用其内部定义的类型?

问题解答

不行,没法在不把GenderEnum移出Character Record的前提下,让这段带位置参数的代码生效。

原因很简单:C#编译器处理Record的主构造函数签名(也就是括号里的string Name, GenderEnum Gender, int Age)时,Character类内部的成员还没被编译,这时候GenderEnum对编译器来说是个未定义的类型,必然会报错。

如果一定要把枚举放在Character的范围内,只能放弃主构造函数的位置参数写法,改成在类内部显式定义构造函数和属性,比如:

internal record class Character
{
    public enum GenderEnum : byte { Male, Female, Other }

    public string Name { get; init; }
    public GenderEnum Gender { get; init; }
    public int Age { get; init; }

    public Character(string name, GenderEnum gender, int age)
    {
        Name = name;
        Gender = gender;
        Age = age;
    }
}

这样枚举在类内部先定义,后面的构造函数就能正常引用它了,而且依然保持枚举是Character的内部成员。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 17:40:28