初始化新对象
Article article = new Article();
新词典:
Dictionary<int, Article> articles = new Dictionary<int, Article>();
读取文件并逐行显示。
System.IO.StreamReader file = new System.IO.StreamReader(@"D:\Posao\Zadatak 3\Zadatak3\Zadatak3\Dokumenti\artikli.txt");
while ((line = file.ReadLine()) != null)
{
var row = line.Split('|').ToString();
}
我的课文章:
public class Article
{
private int Code { get; set; }
private string Name { get; set; }
private string Amount { get; set; }
}
我的文件如下:
343534|Food|Piece
657765|Milk|Liter
...
在每一行中,我得到三个参数(10934, 'food', 'piece'
,对于具有不同值的另一行,它们是相同的)
这些行的属性是我的类Article
的属性所以问题是我从行中获取这些值后如何将这些值放入我的对象中?
答案 0 :(得分:2)
目前Article
课的方式,无法设置或访问课程中的任何属性:它们都是private
。
如果要定义只读属性,则必须仅使用public
方法定义get
。您仍然可以从类的构造函数为属性赋值。您应该定义一个将三条信息作为参数并从那里分配属性。
请注意,您的班级实际上是转换为struct
的合适人选。
答案 1 :(得分:1)
您的代码目前有两个问题:
第一个是,您班级Article
中的属性是私有的。因此,您不允许在课堂范围内访问它们。
有关详细信息,请查看 C# - Access Modifiers和C# - Accessibility Levels。
首先,您应该使properties__public__能够获取并设置值。如果你只想允许使用getter,你至少应该添加一个非参数的构造函数,如:
public Article(int code, string name, string amount)
{
// assign parameter here ...
}
并将您的属性设置为
public string Name { get; private set}
第二个是你的行:
var row = line.Split('|').ToString();
在这里,您只创建一个包含"System.String[]"
的字符串。当前代码中的var
表示字符串的类型,但您需要的是字符串数组。
因此,当您移除ToString()
时,row
变量现在看起来像
string[3] { "343534", "Food", "Piece" }`.
现在您可以创建一个新的Article
,如:
string line = "343534|Food|Piece";
string[] row = line.Split('|'); // string[3] { "343534", "Food", "Piece" }
Article article = new Article();
article.Code = Convert.ToInt32(row[0]);
article.Name = row[1];
article.Amount = row[2];
或以较短的方式使用Object Initializer:
Article article = new Article
{
Code = Convert.ToInt32(row[0]),
Name = row[1],
Amount = row[2]
}
答案 2 :(得分:0)
这是一个基于您的工作代码示例
class Program
{
static void Main(string[] args)
{
Dictionary<int, Article> articles = new Dictionary<int, Article>();
using (System.IO.StreamReader file = new System.IO.StreamReader(@"\artikli.txt"))
{
string line = "";
int lineCounter = 1;
while ((line = file.ReadLine()) != null)
{
if (line.Contains("|"))
{
var row = line.Split('|');
articles.Add(lineCounter++, new Article() { Code = int.Parse(row[0]), Name = row[1], Amount = row[2] });
}
}
file.Close();
}
}
public class Article
{
public int Code { get; set; }
public string Name { get; set; }
public string Amount { get; set; }
public Article() { }
}
}