1

次のようなテーブルを表す CarsDataStore があるとします。

Cars
--------------
Ford | Fiesta
Ford | Escort
Ford | Orion
Fiat | Uno
Fiat | Panda

それから私はすることができました

IEnumerable<Cars> fords = CarsDataStore["Ford"];

これは悪い考えですか?これは、私の API の他のデータストア オブジェクト (すべて 1 列の PK インデクサーを持っています) と矛盾しています。ほとんどの人は、この状況でインデクサーがコレクションを返すことを期待していないと思います。

4

3 に答える 3

2

はい、特に、API の残りの部分と矛盾している場合、それは悪い考えだと思います。一貫性は重要なことであり、常に一貫性を保つよう努めるべきです。

于 2010-03-25T12:56:41.527 に答える
2

インデクサーがコレクションを返すことは期待していませんが、問題が発生した場合、コンパイラーはそれを教えてくれます。

ただし、個人的には、次のようなものをもっと実装します

IEnumerable<Cars> fords = CarsDataStore.GetCarsByType("Ford");
于 2010-03-25T12:56:46.207 に答える
2

プライマリ データ構造を変更すると、問題が解消されます (構文はおそらく完全ではありません)。

Dictionary<string, List<string>> cars =
    new Dictionary<string, List<string>>();

cars.Add("Ford", { "Fiesta", "Escort", "Orion" });
cars.Add("Fiat", { "Uno", "Panda" });

IEnumerable<string> fordCars = cars["Ford"];

もちろん、 に変更stringする必要がありますCarが、考え方は同じです。

于 2010-03-25T12:57:30.617 に答える