メソッドが BaseObjects のリストを期待している DerivedObjects のリストであるリストを渡すにはどうすればよいですか。リストを変換しています.ToList<BaseClass>()
が、もっと良い方法があるかどうか疑問に思っています。2 つ目の問題は、構文が正しくないことです。リスト byref を渡そうとしていますが、エラーが発生しています:'ref' argument is not classified as a variable
これら2つの問題を解決するにはどうすればよいですか? ありがとう。
public class BaseClass { }
public class DerivedClass : BaseClass { }
class Program
{
static void Main(string[] args)
{
List<DerivedClass> myDerivedList = new List<DerivedClass>();
PassList(ref myDerivedList.ToList<BaseClass>());
// SYNTAX ERROR ABOVE IS - 'ref' argument is not classified as a variable
Console.WriteLine(myDerivedList.Count);
}
public static void PassList(ref List<BaseClass> myList)
{
myList.Add(new DerivedClass());
Console.WriteLine(myList.Count);
}
}
解決済み:
これに似た方法で私の問題は解決しました。
public static void PassList<T>(ref List<T> myList) where T : BaseClass
{
if (myList == null) myList = new List<T>();
// sorry, i know i left this out of the above example.
var x = Activator.CreateInstance(typeof(T), new object[] {}) as T;
myList.Add(x);
Console.WriteLine(myList.Count);
}
この質問と他のSOの質問から助けてくれたすべての人に感謝します。