你將不能夠直接施放到List<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
{
...
你好,我的plist類確實有一個構造函數的IEnumerable添加您的擴展方法,但我仍然無法看到ToPList()內的列表我錯過了什麼嗎? –
2012-04-18 19:11:39
@JarmezDeLaRocha你在「列表'」內是什麼意思?「?你的意思是在intellisense中嗎? –
phoog
2012-04-18 19:14:54
是的,當我列出。我沒有看到例如像我看到tolist或toarray的榜單。我錯過了這個觀點嗎?我只是在閱讀這些擴展方法,現在他們對我來說是新的! – 2012-04-18 19:17:48