所以这是文本文件,例如:
Apple, red, crunchy
Orange, orange, juicy
Watermelon, green, juicy
好的,所以我可以让C#读取每一行并将其放入数组中。我需要的是C#查看它并制作和排列称为水果3个对象的对象。因此,对于数组中的第一项,我希望能够访问每个单独的条目,而不仅仅是一个字符串。我的想法是,然后我可以将每个属性发送到一个类中以创建对象。
所以假设我已经创建了FileStream和类似的东西。
Fruit[] fruits = new Fruit[3];
现在,我要将三个条目带入第一行,并将其发送给Fruit的构造函数。
任何帮助将不胜感激,希望我很清楚。
答案 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);