如何从txt文件中制作水果数组,每个水果在C#中具有四个属性

时间:2018-09-18 17:28:40

标签: c# arrays class object

所以这是文本文件,例如:

Apple, red, crunchy
Orange, orange, juicy
Watermelon, green, juicy

好的,所以我可以让C#读取每一行并将其放入数组中。我需要的是C#查看它并制作和排列称为水果3个对象的对象。因此,对于数组中的第一项,我希望能够访问每个单独的条目,而不仅仅是一个字符串。我的想法是,然后我可以将每个属性发送到一个类中以创建对象。

所以假设我已经创建了FileStream和类似的东西。

Fruit[] fruits = new Fruit[3];

现在,我要将三个条目带入第一行,并将其发送给Fruit的构造函数。

任何帮助将不胜感激,希望我很清楚。

3 个答案:

答案 0 :(得分:0)

这个问题的重点不突出。您需要做几件事。

首先,将文本文件添加到项目中(如果使用的是Visual Studio,请右键单击该文件,然后单击“复制到输出目录”。否则,将其放在.bin旁边的/ bin文件夹中。

然后使用System.IO.ReadLines(对此进行研究)获取文件的内容。 https://www.dotnetperls.com/file-readlines

这将为您提供一个字符串数组,每个数组包含一个具有所有属性的水果项目。

遍历该数组,并使用string.Split(',')将该字符串解析为一个字符串数组,其中每个索引均具有Fruit和属性。 https://docs.microsoft.com/en-us/dotnet/api/system.string.split?view=netframework-4.7.2

一旦索引了属性,就可以遍历它并创建一个新的Fruit(){Name = string2dArray [i] [0],Prop2 = string2dArray [i] [1],...} https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/how-to-initialize-objects-by-using-an-object-initializer

您需要花一些时间来了解如何执行这些步骤,我认为这里没有任何人可以(或应该)为您这样做。

答案 1 :(得分:0)

您可以简单地使用Linq拆分项目:

IEnumerable<string[]> items = File.ReadAllLines("filename.txt").Select(x=> x.Split(','));
Fruit[] fruits = items.Select(x=> new Fruit{Name = x[0], Color = x[1], Type = x[2]}).ToArray();

答案 2 :(得分:0)

您必须编写水果类,在您的项目中创建一个名为Fruit.cs的新文件

然后这应该可以解决问题:

class Fruit
{
    string fruitName { get; set; }
    string desc1 { get; set; }
    string desc2 { get; set; }
    string desc3 { get; set; }
    string desc4 { get; set; }

    public Fruit(string name,string description1,string description2)
    {
        this.fruitName = name;
        this.desc1 = description1;
        this.desc2 = description1;
    }


}
我认为应该朝着正确的方向前进。 Zakk Diaz是正确的,但是您必须逐行将文本解析为这些水果对象。然后将它们添加到您的数组中。如果可能的话,我会使用List<Fruit>而不是数组,但是那只是我。

它看起来像这样:

List<Fruit> fruits = new List<Fruit>();

        Fruit addfruit = new Fruit(firstLineOfParsed(name), secondLineOfParsed(desc1), thirdLineOfParsed(desc2));
        fruits.Add(addfruit);