0

プロジェクトには、初期化時に一致する値を含むフィールドを持つオブジェクトが多数あります。例として、以下のコード スニペット、特にAddedDateTimeModifiedDateTimeプロパティを参照してください。

User user = new User()
{
    FirstName = "Tex",
    Surname = "Murphy",
    AddedDateTime = DateTime.Now,
    ModifiedDateTime = DateTime.Now
};

一度設定した {...} ブロック内でModifiedDateTimeの値を の値に設定することはできますか?AddedDateTime

無理だとは思いますが、確認してみる価値はあると思います。

4

5 に答える 5

1

これがあなたの目的かどうかはわかりませんが、これは適切ですか?

var now = DateTime.Now;
User user = new User
{
     FirstName = "Tex",
     Surname = "Murphy",
     AddedDateTime = now,
     ModifiedDateTime = now
};

それらを同じ値に初期化する場合は、共通の変数値に設定する必要があります。

于 2012-05-03T18:56:13.387 に答える
1

このロジックをプロパティの実装に入れることができます。

public class User{
  private DateTime added;
  private DateTime? modified;

  string FirstName {get;set;}
  string SurName {get;set;}

  DateTime AddedDateTime { 
   get { return added; } 
   set { added = value;
         modified = modified ?? value;
       }
   }

  DateTime? ModifiedDateTime {
    get { return modified }
    set { modified = value; }
  }
}
于 2012-05-03T18:57:06.950 に答える
0
User user = new User
            {
                FirstName = "Tex",
                Surname = "Murphy",
                AddedDateTime = DateTime.Now < Something? DateTime.Now : SomeOtherValue,
                ModifiedDateTime = DateTime.Now < Something? DateTime.Now : SomeOtherValue
            };
于 2012-05-03T18:47:53.760 に答える
0

コメントで述べたように、必要なデータだけを含むコンストラクターを作成できます。

public User(string firstName, string sirname)
{
    FirstName = firstName,
    Surname = sirname,
    AddedDateTime = DateTime.Now,
    ModifiedDateTime = DateTime.Now
};

クラスのインスタンスを作成するためのヘルパーメソッドを使用することもできます。それらはクラス内にある場合とない場合があります(これは、クラス自体を制御できない場合に役立ちます)

public static User CreateUser(string firstName, string sirname)
{
    User newUser = new User();
    newUser.FirstName = firstName,
    newUser.Surname = sirname,
    newUser.AddedDateTime = DateTime.Now,
    newUser.ModifiedDateTime = DateTime.Now

    return newUser;
};

次のようなものもあります。

public static User CreateUser(string firstName, string sirname, string otherdata)
{
    User newUser = new User();
    newUser.FirstName = firstName,
    newUser.Surname = sirname,
    newUser.AddedDateTime = DateTime.Now,
    newUser.ModifiedDateTime = DateTime.Now,
    newUser.SomeField = otherdata,
    newUser.SomeOtherField = otherdata

    return newUser;
};
于 2012-05-03T18:51:30.540 に答える
0

ModifiedDateTime の最小値をチェックし、それに応じて設定するロジックを AddedDateTime のセッターに入れることができます。例えば

public DateTime ModifiedDateTime { get; set; }
private DateTime _addedDateTime;
public DateTime AddedDateTime {
    get { return _addedDateTime; }
    set 
    {
        if (ModifiedDateTime == DateTime.MinValue)
        {
            ModifiedDateTime = _addedDateTime = value;
        };
    }
}

...

var test = new Test 
{ 
   AddedDateTime = DateTime.Now
};
于 2012-05-03T18:54:41.287 に答える