1

我有一个简单的场景,我有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价值。这可能吗?所以有点 2 种get基于它的设置方式。我知道我可以创建3rdTest,但我有一些使用的方法AnotherTest和其他字段,我必须编写这些方法的重载。

编辑:

我读了一些银行提供的文件。我把它切成小块,把一些东西放在Test价值中,交易的每个其他字段(AnotherTest 和类似的)都会自动填充。但是稍后我想从 SQL 中读取格式已经很好的事务,因此我不需要提供Test其他字段。我想设置这些字段,set然后能够在get不设置Test值的情况下使用。

4

3 回答 3

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;

该吸气剂也可以表示为

return (_anotherTest != null || Test == null)
    ? _anotherTest
    : Test.Substring(Test.IndexOf("S"), 4);
于 2012-04-10T16:50:39.027 回答
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;
}
于 2012-04-10T16:52:28.247 回答
0

我建议把问题转过来。

听起来您正在处理一个大字段和其中的子字段。相反,如何将这些子字段提升为字段并在访问大字段时构造/解构它。

于 2012-04-10T16:55:02.767 回答