您将无法将 aList<T>
直接投射到pList<T>
. 您可以制作一个扩展方法(就像ToList
)。假设你的类有一个构造函数,它需要一个IEnumerable<T>
来填充列表:
static class EnumerableExtensions
{
static pList<T> ToPList<T>(this IEnumerable<T> sequence) { return new pList<T>(sequence); }
}
如果您的类没有这样的构造函数,您可以添加一个,或者执行以下操作:
static class EnumerableExtensions
{
static pList<T> ToPList<T>(this IEnumerable<T> sequence)
{
var result = new pList<T>();
foreach (var item in sequence)
result.Add(item);
return result;
}
}
我的 pList 类确实有一个采用 IEnumerable 的构造函数添加了您的扩展方法,但我仍然无法在列表中看到 ToPList() 我错过了什么吗?
首先,如果你有这样一个构造函数,并且你想将一个现有的转换List<T>
为一个pList<T>
,你当然可以这样做:
List<T> originalList = GetTheListSomehow();
var newList = new pList<T>(originalList);
要使用扩展方法,您必须确保该方法在范围内。我没有在我的示例中添加访问修饰符。放入internal
或public
放入,视情况而定:
public static class EnumerableExtensions
{
internal static pList<T> ToPList<T> //...
此外,如果您想在不同的命名空间中使用扩展方法,则必须using
在范围内有一个指令。例如:
namespace A { public static class EnumerableExtensions { ...
别处:
using A;
// here you can use the extension method
namespace B
{
public class C
{
...
或者
namespace B
{
using A;
// here you can use the extension method
public class C
{
...