gpt4 book ai didi

C# 创建不可为 null 的字符串。是否可以?不知何故?

转载 作者:行者123 更新时间:2023-12-02 02:04:14 25 4
gpt4 key购买 nike

所以你不能继承string。您无法创建不可为 null 的字符串。但我想这样做。我想要一个类,我们称之为 nString,它返回一个默认值,否则该值将为 null。我有 JSON 对象,谁知道有多少个空字符串,甚至空对象。我想创建具有永远不会返回 null 的字符串的结构。

public struct Struct
{
public nString value;
public nString value2;
}

我想我可以做这样的事情:

public struct Struct
{
public string val { get { return val ?? "N/A"; } set { val = value; } }
public string val2 { get { return val2 ?? "N/A"; } set { val2 = value; } };
}

但这还有很多工作要做。有什么办法可以做到这一点吗?

最佳答案

您当然可以拥有以下nString结构:

public struct nString
{
public nString(string value)
: this()
{
Value = value ?? "N/A";
}

public string Value
{
get;
private set;
}

public static implicit operator nString(string value)
{
return new nString(value);
}

public static implicit operator string(nString value)
{
return value.Value;
}
}

...

public nString val
{
get;
set;
}

obj.val = null;
string x = obj.val; // <-- x will become "N/A";

这将允许从字符串进行转换。在底层,它执行与您的示例相同的转换,您只是不必为每个属性都键入它。我确实想知道这对您的应用程序的可维护性有何影响。

关于C# 创建不可为 null 的字符串。是否可以?不知何故?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26554003/

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