0

コレクションプロパティ(タイプ「IList」または配列)の場合、要素がない場合はnullにするか、空のコレクションとして表す必要があります(つまり、長さがゼロ)

例えば

public class Teacher
{
  public List<Student> Students = null // to represent absence of items
}

また

public class Teacher
{
   public List<Student> Students = new List<Student>() // Initialize the collection.
}

これに関するベストプラクティスは何ですか。

4

2 に答える 2

3

ほとんどの場合、これは空のリストです。これにより、リストを使用するすべての場所で null チェックを行う必要がないため、ロジックが簡素化されます。

たとえば、リストに要素 "Test" が含まれているかどうかを確認するには、次のようにします。

if (myList.Contains("Test"))

書く代わりに

if( myList != null && myList.Contains("Test"))

これは、拡張メソッドに対して LINQ が行うことでもあります。要素がない場合は、null ではなく、空の IEnumerable を返します。もちろん、これらのメソッド呼び出しを連鎖できるようにすることも重要です。

もちろん、特定の何かを示すためにリストを null にしたい場合もありますが、ほとんどの場合、リストを初期化することで自分に有利に働いています。そうすれば、null ポインター例外がはるかに少なくなります;)

于 2013-01-04T09:46:24.270 に答える
0

それらはまったく異なる意味を持つ可能性があるため、正しいコードを決定するのはあなた (およびあなたの要件) 次第です。

生徒のいない教師 ( ) は、生徒のいない教師 ( Students = null) と同じStudents.Count == 0です。nullデータベース用語では、1 つは列の値に相当し、もう 1 つは値0です。

ただし、これらのケースが同等である場合は、IMHOよりも実行する方がよい

public List<Student> Students = new List<Student>();

プロパティでのよう.Countな操作を行うとスローされないためです。.Where

ところで、それをプロパティにしてください。公開された変更可能なコレクションフィールドは、デバッグするのが楽しいです。

于 2013-01-04T09:52:17.667 に答える