2010-04-15 37 views
3

我试图执行从List<string>继承的新类,以将内容从文本文件加载到项目。C# - 取得继承自列表的项目<string>

using System.Collections.Generic; 
using System.IO; 
using System.Linq; 

public class ListExt : List<string> 
{ 
    string baseDirectory; 

    public void LoadFromFile(string FileName) 
    { 
     //does not work because _list is private 
     this._items = File.ReadAllLines(FileName).ToList(); 
    } 
} 

但我不知道如何将线加载到_items属性,因为它是私人的。

有什么建议吗?

+0

顺便说一句,LoadFromFile必须有void – 2010-04-15 15:55:58

+1

听起来就像你想要的扩展方法,顺便说一下。 – Noldorin 2010-04-15 15:56:39

回答

7

ListExt列表 - 所以你可以叫AddRange自己。你不能重新分配的名单 - 基本上将改变this

6

试着这么做:

public void LoadFromFile(string FileName) 
{ 
    base.AddRange(File.ReadAllLines(FileName)); 
} 
+0

哪个不会编译... – 2010-04-15 15:55:55

+0

想一想就改了一下...... :) – 2010-04-15 15:56:24

+2

为什么'base.AddRange'而不是'this.AddRange'? – 2010-04-15 16:00:58

0

试试这个:

AddRange(File.ReadAllLines(FileName).ToList()); 
+0

ToList()浪费内存,数组也是IEnumerable。 – Rubys 2010-04-15 16:08:22

1

没有必要过分以下行从List<T>获得一个全新的类。

List<string> lines = new List<string>(File.ReadAllLines(path));