我如何传递一个列表,该列表是一个 DerivedObjects 列表,其中该方法需要一个 BaseObjects 列表。我正在转换列表.ToList<BaseClass>()
,想知道是否有更好的方法。我的第二个问题是语法不正确。我正在尝试通过引用传递列表,但出现错误:'ref' argument is not classified as a variable
我该如何解决这两个问题?谢谢。
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 问题的人。