3

私は現在これを持っています:

public void Load(IEnumerable<Guid> ids){
    f1(ids);
    f2(ids);
} 

Resharper の波線を避けるために、推奨される修正は次のようなものです。

public void Load(IEnumerable<Guid> ids){
    var enumerable = ids as IList<Guid> ?? ids.ToList();
    f1(enumerable);
    f2(enumerable);
} 

問題は、「enumerable」の適切な名前を思いつかないことです。idsList や enumeratedIds とは呼びたくありません。enumerable は確かに機能せず、ids は既にパラメーターに使用されています。だから私の実際の質問は、これで両方の問題が解決するのですか?

public void Load(IEnumerable<Guid> ids){
    ids = ids as IList<Guid> ?? ids.ToList();
    f1(ids);
    f2(ids);
}

上記が予期しない/非効率的な結果をもたらす状況はありますか?

4

2 に答える 2

4

上記が予期しない/非効率的な結果をもたらす状況はありますか?

のリスト全体を列挙f1も列挙もせず、が として与えられない場合、リストへの変換はより高価になります。たとえば、最初の 5 つの要素takeがキャッシュされていないコンテキストから取得され、何千ものアイテムが含まれている場合、このアプローチは効率が低下します。f2GuididsList<Guid>f1f2FirstOrDefaultidsToList

Resharper の波線を避けるために、推奨される修正方法は ...

すべての Resharper 警告を修正する必要があるわけではありません。ツールは問題に注意を引き付けます。問題を修正するか、警告を無視するかはユーザー次第です。Resharper は潜在的な問題を常に監視していますが、内部f1で何が起こっているかを知っているのはあなただけですf2。リストの実体化を避ける方が効率的であると思われる場合は、// ReSharper disableコメントを使用して波線を避けてください。

于 2013-09-23T21:33:59.383 に答える