我之前没有制作过自定义类,所以这可能无法实现,我想阅读一些文本文件,并存储一些有关它们的信息,以便在整个程序中使用。
class text
{
public int IDnum { get; set; }
public string file { get; set; }
public int lineNum { get; set; }
public string FileText { get; set; }
public string lineType { get; set; }
}
List<text> listOne = new List<text>();
internal void ReadFile()
{
try
{
int IDtype = 0;
foreach (string x in resultFiles)
{
using (StreamReader sr = new StreamReader(x))
{
string s;//text line
int LINECOUNT = 0;
string type = "not defined";
while ((s = sr.ReadLine()) != null)// this reads the line
{
if(s.Contains("COMPUTERNAME="))
{
type = "PC Name";
}
if (s.Contains("Original Install Date: "))
{
type = "Original Install Date";
}
if (LINECOUNT==2)
{
type = "other Date";
}
if (s.Contains("DisplayName\"="))
{
type = "Add/Remove Programs";
}
text text1 = new text { IDnum = IDtype, lineNum=LINECOUNT, file=x, FileText=s, lineType=type};
LINECOUNT++;
IDtype++;
listOne.Add(text1);
}
sr.Close();
}
}
foreach(var x in listOne)
{
MessageBox.Show(x.ToString());
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
然而,当我尝试读取列表时,它只返回相同的值“class.text of class.text”的名称
我之前从未构建过自定义类,有人可以指向一个我可以学习更多示例的网站吗?
提前感谢任何建议:)
答案 0 :(得分:3)
x.ToString()
不起作用,因为它是你的类的一种类型,而不是字符串。
您可以访问该项的属性
foreach (var x in listOne)
{
MessageBox.Show(x.file + " " + x.FileText);
}
或覆盖您班级中的ToString()
方法 - 然后您可以使用x.ToString()
class text
{
public int IDnum { get; set; }
public string file { get; set; }
public int lineNum { get; set; }
public string FileText { get; set; }
public string lineType { get; set; }
public override string ToString()
{
return string.Format("{0}, {1}", this.file, this.FileText);
}
}
答案 1 :(得分:1)
listOne
是类text
的列表,因此在循环中实际打印的是类名而不是内容。您可以通过调用您定义的成员来打印内容
foreach(var x in listOne)
{
MessageBox.Show(x.IDnum + " " + x.file + ...);
}
作为旁注,C#中的类名应以大写字母开头。
答案 2 :(得分:1)
要使用ToString()
方法,您必须覆盖它,例如通过以下方式:
class text
{
public int IDnum { get; set; }
public string file { get; set; }
public int lineNum { get; set; }
public string FileText { get; set; }
public string lineType { get; set; }
public override ToString()
{
return fileText; // return here whatever you want to use
}
}
使用ToString()
获取有关Test类实例的信息。如果你像上面那样实现ToString,或者使用类的属性,你将获得更好的结果。