作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以你不能继承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/
我是一名优秀的程序员,十分优秀!