ref
オーバーロードされたメソッドのパラメーターに追加しようとすると、エラーが発生するのはなぜですか?
'WindowsFormsApplication1.Form1.SearchProducts(int)'に最適なオーバーロードされたメソッドの一致には、いくつかの無効な引数があります
引数1:'refSystem.Collections.Generic.List'から'int'に変換できません
ここにいくつかの(簡略化された)コードがあります:
public virtual IList<int> SearchProducts(int categoryId)
{
List<int> categoryIds = new List<int>();
if (categoryId > 0)
categoryIds.Add(categoryId);
return SearchProducts(ref categoryIds);
}
public virtual IList<int> SearchProducts(ref IList<int> categoryIds)
{
return new List<int>();
}
編集:
この場合になぜ必要なのかと尋ねられた方もいらっしゃいますref
が、リストをクリアして新しい要素を追加できるので(新しい参照を作成する必要がないため)、おそらく必要ないという答えが返ってきます。しかし、問題は私が必要かどうかという事実ではなくref
、なぜエラーが発生したかということです。そして、答えが見つからなかったので(しばらくグーグルした後)、質問は面白くて、ここで尋ねる価値があると思いました。良い質問だとは思わず、閉鎖することに投票した方もいらっしゃると思います...