在c#中构建自定义类

时间:2016-04-05 08:21:29

标签: c# list class

我之前没有制作过自定义类,所以这可能无法实现,我想阅读一些文本文件,并存储一些有关它们的信息,以便在整个程序中使用。

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”的名称

我之前从未构建过自定义类,有人可以指向一个我可以学习更多示例的网站吗?

提前感谢任何建议:)

3 个答案:

答案 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,或者使用类的属性,你将获得更好的结果。