私はを十分に把握していないかもしれません?オペレータはまだ説明できなかった設計上の欠陥に遭遇しました。ヌル合体演算子による初期化?
は、唯一の違いはそこに初期化されるかされ、次の2つのプロパティを比較します。最初は、明示的に初期化、を有する第二ながら?オペレータ(または私はここで間違っているのですか?)。
データ初期化を両方のプロパティで実行すると、最初のプロパティに基づくコレクションが予想通りに読み込まれ、2番目のデータセットはとなります。演算子には決してデータが取り込まれず、コレクションに0個の要素が含まれます。
きっと何かがここに私の仮定で間違っています。ここの欠陥は何ですか?
P.S.基本クラスにINotifyPropertyChangedのを実装することで、(初期化の種類に限定される)は、この問題には関係ありませんセット方法を無視してください。
//プロパティバージョン1
private ObservableCollection<UserName> _userNameColl = new ObservableCollection<UserName>();
public ObservableCollection<UserName> UserNameColl
{
get { return _userNameColl; }
set { Set(ref _userNameColl, value); }
}
//プロパティバージョン2
private ObservableCollection<UserName> _userNameColl;
public ObservableCollection<UserName> UserNameColl
{
get { return _userNameColl ?? new ObservableCollection<UserName>(); }
set { Set(ref _userNameColl, value); }
}
//
public class UserName
{
public string Name { get; set; }
public int Age { get; set; }
public string Email { get; set; }
}
//簡単なテスト移入オブジェクトのコレクションを作成するための単純なクラスコレクション
for (int i = 0; i < 4; i++)
{
// silly data init just for test
UserNameColl.Add(new UserName()
{
Name = $"UserName No {i}",
Age = 20 + i,
Email = $"email{i}@local.lan"
});
}
、手動で設定しない限り、あなたがない限り、それは新しい 'ObservableCollection'インスタンスにあなたがそれを取得しようとするたびに返されますので、二つ目は、実際に、インナーコレクションの値を設定することはありません。 – Abion47
Aaaah!それはそれを説明する。 – user2921851