C#实例化类对象&添加到列表

时间:2017-11-17 02:54:03

标签: c#

如何创建Country的新实例,该实例使用3个变量firstParam,secondParam,thirdParam作为其构造函数并添加到List countryList?

正在从.txt读取3个变量并拆分, 阿富汗,喀布尔,30419928 阿尔巴尼亚,地拉那,2821977

我的3个拆分变量firstParam,secondParam,thirdParam包含正确的信息。当我添加到countryList时,我认为我犯了语法错误,因为调试模式逐步执行变量会加载正确的信息但是当我在countryList上尝试foreach时,我得到输出“countries.country”。

    List<Country> countryList = new List<Country>();

        foreach (string line in lines)
        {
            string[] criteria = line.Split(',');

            string firstParam = "";
            string secondParam = "";
            int thirdParam = 1;

            firstParam = criteria[0];
            secondParam = criteria[1];
            thirdParam = Convert.ToInt32(criteria[2]);

            countryList.Add(new Country(firstParam, secondParam, thirdParam));


        }

我没有想法,也不确定还有什么可以尝试我想要了解更多关于构图但希望有人可以轻推我。 谢谢。

2 个答案:

答案 0 :(得分:0)

如果要选择调试值,则应使用这种方式&#39;覆盖ToString()&#39;或者&#39; DebuggerDisplayAttribute&#39;。

 //DebuggerDisplayAttribute
[DebuggerDisplay("Value = {Display}")]
public class Country
{
    public string Name { get; set; }
    public string City { get; set; }    

    public string Display
    {
        get => $"{Name}, {City}";
    }

    //Override ToString()
    public override string ToString()
    {
        return $"{Name}, {City}";
    }
}

答案 1 :(得分:-1)

尝试此操作以验证您的代码是否按照您希望的方式运行:

List<Country> countryList = new List<Country>();

foreach (string line in lines)
{
    string[] criteria = line.Split(',');

    countryList.Add(new Country(criteria[0],
                                criteria[1],
                                Convert.ToInt32(criteria[2]))
}

Console.WriteLine($"Countries in countryList: {countryList.Count}.");

foreach ( Country country in countryList)
{
    Console.WriteLine($"Name: {country.Name}, Capital: {country.Capital}, Population: {country.Population}.");
}

您可能需要为Country类的字段插入自己的名称,而不是Name,Capital和Population。