9

私はジレンマに陥っています。(削減された) タスクは、次のデータ ホルダー クラスを再設計することです。

class Stuff
{
  public String SomeInfo { get; set; }
}

nullを返してはならないという要求に対応するため。それを達成するための 2 つの方法を考えることができます。15 分間深く検討した後、どちらを優先するかを決定することはできません。

コンストラクタによるアプローチ。

class Stuff
{
  public String SomeInfo { get; set; }
  public Stuff() { SomeInfo = String.Empty; }
}

物件別アプローチ。

class Stuff
{
  private String _SomeInfo;
  public String SomeInfo 
  { 
    get { return _SomeInfo ?? String.Empty; }
    set { _SomeInfo = value; }
  }
}

Stuffインスタンスの作成は、コンストラクターと初期化を使用して行うことができることに注意してください。私が知る限り、その他の制限はありません (ただし、顧客の仕様が必ずしも現実を反映しているとは限らないことはご承知のとおりです)。

4

3 に答える 3

8

これに別の答えを追加するだけで、単一のステートメントで文字列オブジェクトにデフォルト値を設定することもできます。

class Stuff
{
  private String Something {get; set;} = string.Empty;
}
于 2016-10-21T07:20:37.297 に答える
5

ゲッターではなくセッターでロジックを実装することもできます。そのようにして、バックフィールドは常に有効な値を持ちます

class Stuff
{
  private String _SomeInfo = string.Empty;
  public String SomeInfo 
  { 
    get { return _SomeInfo; }
    set 
    { 
      if (value != null)
      {
        _SomeInfo = value; 
      }
    }
  }
}
于 2013-06-12T11:50:49.287 に答える