gpt4 book ai didi

c# - 可空枚举的延迟属性

转载 作者:行者123 更新时间:2023-11-30 23:07:08 26 4
gpt4 key购买 nike

当我在类中有一个可以为空的可选属性时,我使用以下模式来延迟它。我还使用值类型的变体,例如整数。

    string myType;
public string MyType
{
get { return myType ?? (myType = GetMyType()); }
}

我正在尝试对枚举做同样的事情——我希望模式是这样的:

    MyEnum? myEnum;
public MyEnum MyEnum
{
get { return myEnum ?? (myEnum = GetMyEnum()); }
}

但是,我收到一条错误消息,指出我无法明确进行此转换 - 有人知道我如何绕过它吗?

最佳答案

(myEnum = GetMyEnum()) 赋值的结果是 MyEnum? 因为 myEnumMyEnum?;因此您需要在 (...) 之后添加 .Value.GetValueOrDefault()

这有效,例如:

public MyEnum MyEnum => myEnum ?? (myEnum = GetMyEnum()).GetValueOrDefault();

同样:

public MyEnum MyEnum => myEnum ?? (myEnum = GetMyEnum()) ?? 0;

或在 C# 7.1 中:

public MyEnum MyEnum => myEnum ?? (myEnum = GetMyEnum()) ?? default;

关于c# - 可空枚举的延迟属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47554052/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com