【发布时间】:2020-07-10 22:48:10
【问题描述】:
我知道这个问题不是很清楚,我什至不知道可以用什么词来描述我正在尝试做的事情,但这个例子应该更清楚。
说这段代码
public string Underscores;
public string Spaces
{
get => Underscores.Replace('_', ' ');
set => Underscores = value.Replace(' ', '_');
}
在此示例中,Underscores 的值存储在内存中,但 Spaces 的值不是,而是在引用时动态生成。如果 Spaces 的值发生变化,Underscored 的值也会相应变化。我想做的是将这个概念扩展到结构和类:
struct StringStruct
{
public string Value { get; set; }
}
...
public string Underscores;
public StringStruct Spaces
{
get => new StringStruct { Value = Underscores.Replace('_', ' ') };
set => UnderScores = value.Value.Replace(' ', '_') };
}
如果我用新的 StringStruct 覆盖 Spaces,它可以正常工作,但是尝试更改 Space 的 Value 属性的值会导致编译器错误,因为它不是变量。相同的场景,但 StringStruct 是一个类不会导致错误,但更改将被忽略,下划线将保持不变。
这些例子是为了解释而不是我真正想要做的。
【问题讨论】:
-
value在以下代码中是指StringStruct的实例,而不是字符串:value.Replace(' ', '_')。但是Replace()是一个字符串函数。 -
糟糕,我会更新示例
标签: c# .net properties