我有一个简单的场景,我根据AnotherTest
值得Test
值。这大部分时间都可以正常工作,这样每当我提供Test
时,我肯定会轻易获得AnotherTest
。
public sealed class Transaction {
public string Test { get;set; }
public string AnotherTest{
get {
int indexLiteryS = Test.IndexOf("S");
return Test.Substring(indexLiteryS, 4);
}
}
}
但是,我希望能够set
AnotherTest
值,并且无需提供Test
值即可阅读。这可能吗?所以有两种类型get
基于它的设置方式。我知道我可以创建3rdTest
但我有一些使用AnotherTest
和其他字段的方法,我将不得不编写那些方法的重载。
编辑:
我读了银行提供的一些文件。我把它切成碎片,把一些东西放在Test
值中,并且Transaction的每个其他字段(AnotherTest和类似的东西)都会自动填充。
但是后来我想从SQL中读取已经处于良好格式的事务,因此我不需要提供Test
来获取其余的字段。我想使用set
设置这些字段,然后在不设置get
值的情况下使用Test
。
答案 0 :(得分:4)
是的,就像这样:
public string Test { get; set; }
public string AnotherTest
{
get
{
if(_anotherTest != null || Test == null)
return _anotherTest;
int indexLiteryS = Test.IndexOf("S")
return Test.Substring(indexLiteryS, 4);
}
set { _anotherTest = value; }
}
private string _anotherTest;
getter也可以表示为
return (_anotherTest != null || Test == null)
? _anotherTest
: Test.Substring(Test.IndexOf("S"), 4);
答案 1 :(得分:1)
我认为这会做你想做的事情:
public sealed class Transaction {
public string Test { get;set; }
public string AnotherTest{
get {
if (_anotherTest != null)
{
return _anotherTest;
}
else
{
int indexLiteryS = Test.IndexOf("S");
return Test.Substring(indexLiteryS, 4);
}
}
set {
_anotherTest = value;
}
}
private string _anotherTest = null;
}
答案 2 :(得分:0)
我建议把问题转过来。
听起来你正在处理其中的大字段和子字段。相反,如何将这些子字段推广到字段并在访问时构建/解构大字段。