Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用列表<&燃气轮机;在船舱内_C# - Fatal编程技术网

C# 使用列表<&燃气轮机;在船舱内

C# 使用列表<&燃气轮机;在船舱内,c#,C#,我创建了一个名为people的列表,其中包含身份号码、姓名、头衔和城市。我想使用foreach自动读取这个列表,但语法有点僵化。有人能解释一下吗。下面是我的代码 List<Person> people = new List<Person>(); Person p1 = new Person(74, "Brad","Millington","Program Manager", "Milford"); Person p2 = new Person(58, "John", "

我创建了一个名为people的列表,其中包含身份号码、姓名、头衔和城市。我想使用foreach自动读取这个列表,但语法有点僵化。有人能解释一下吗。下面是我的代码

List<Person> people = new List<Person>();

Person p1 = new Person(74, "Brad","Millington","Program Manager", "Milford");
Person p2 = new Person(58, "John", "Kaufman", "Author", "Ottawa");
Person p3 = new Person(68, "-*", "Washington" , "Developer", "Redmond");
Person p4 = new Person(79, "Abraham", "Licoln", "Developer", "Redmond");

foreach (string s in people)
{
    people.Add(s);
}
List people=newlist();
人员p1=新人(74人,“布拉德”、“米林顿”、“项目经理”、“米尔福德”);
人物p2=新人(58,“约翰”、“考夫曼”、“作家”、“渥太华”);
人员p3=新人(68、“-*”、“华盛顿”、“开发商”、“雷蒙德”);
人员p4=新人员(79,“亚伯拉罕”、“利科伦”、“开发商”、“雷蒙德”);
foreach(人中的字符串s)
{
人员。添加(s);
}

您的人员列表开始时当前为空

您需要将p1、p2、p3和p4添加到人员列表中

Person p1 = new Person(74, 'Brad', 'Millington', 'Program Manager', 'Milford');
people.add(p1);
然后在你的for-each中,如果你正在打印它们,我想你的名字有一个getter

foreach (Person p in people) 
{
    Console.Write(p.getFirstName() + ' ' + p.getLastName());
}

我自己没有做过任何C#,但根据我使用Java的经验,
foreach
语句用于循环遍历包含数据的枚举,而不是首先填充集合。你不能在没有项目的东西中循环-在你的例子中,你试图在人物中为每个“s”做一个“for each”,但是人物是空的,因为你还没有添加任何内容

如果要将这4个人添加到列表中,只需直接添加他们:

List<Person> people = new List<Person>();

people.Add(new Person(74, "Brad","Millington","Program Manager", "Milford"));
people.Add(new Person(58, "John", "Kaufman", "Author", "Ottawa"));
people.Add(new Person(68, "-*", "Washington" , "Developer", "Redmond"));
people.Add(new Person(79, "Abraham", "Licoln", "Developer", "Redmond"));

注意,此时,循环将循环并在每次迭代中为您提供一个
Person
实例,而不是一个字符串。为了在编写时使用foreach,您必须为
Person
类隐式转换为string(我不建议这样做)。

好的,您的代码有一些问题:

  • people
    Person
    对象的列表,因此将其作为字符串列表进行迭代将导致编译错误

  • 使用
    foreach
    时,无法修改正在迭代的集合。您可以在循环中使用
    .Add()
    来执行此操作

  • people
    为空,因此循环无论如何都不会执行

  • 此代码将编译并写入控制台中每个人的名字和姓氏:

    List<Person> people = new List<Person>();
    
    Person p1 = new Person(74, "Brad","Millington","Program Manager", "Milford");
    Person p2 = new Person(58, "John", "Kaufman", "Author", "Ottawa");
    Person p3 = new Person(68, "-*", "Washington" , "Developer", "Redmond");
    Person p4 = new Person(79, "Abraham", "Licoln", "Developer", "Redmond");
    
    people.Add(p1);
    people.Add(p2);
    people.Add(p3);
    people.Add(p4);
    
    foreach (Person p in people)
    {
        Console.WriteLine(p.FirstName + " " + p.LastName);
    }
    
    List people=newlist();
    人员p1=新人(74人,“布拉德”、“米林顿”、“项目经理”、“米尔福德”);
    人物p2=新人(58,“约翰”、“考夫曼”、“作家”、“渥太华”);
    人员p3=新人(68、“-*”、“华盛顿”、“开发商”、“雷蒙德”);
    人员p4=新人员(79,“亚伯拉罕”、“利科伦”、“开发商”、“雷蒙德”);
    人员。添加(p1);
    新增(p2);
    新增(p3);
    新增(p4);
    foreach(人员中的人员p)
    {
    Console.WriteLine(p.FirstName+“”+p.LastName);
    }
    
    作为对其他正确答案的补充,我注意到创建测试数据的更好方法是使用集合初始值设定项:

    var people = new List<Person>{
        new Person(74, "Brad","Millington","Program Manager", "Milford"),
        new Person(58, "John", "Kaufman", "Author", "Ottawa"),
        new Person(68, "-*", "Washington" , "Developer", "Redmond"),
        new Person(79, "Abraham", "Licoln", "Developer", "Redmond")
    };
    
    List people=新列表()
    {
    新人(74岁,“布拉德”、“米林顿”、“项目经理”、“米尔福德”),
    新人(58岁,“约翰”、“考夫曼”、“作家”、“渥太华”),
    新人(68、“-*”、“华盛顿”、“开发商”、“雷蒙德”),
    新人(79,“亚伯拉罕”、“利科伦”、“开发商”、“雷德蒙”)
    };
    foreach(人对人)
    {
    Console.WriteLine(person.Name);
    }
    
    您可以使用列表初始值设定项:

    var people = new List<Person>{
        new Person(74, "Brad","Millington","Program Manager", "Milford"),
        new Person(58, "John", "Kaufman", "Author", "Ottawa"),
        new Person(68, "-*", "Washington" , "Developer", "Redmond"),
        new Person(79, "Abraham", "Licoln", "Developer", "Redmond")
    };
    
    var people=新列表{
    新人(74岁,“布拉德”、“米林顿”、“项目经理”、“米尔福德”),
    新人(58岁,“约翰”、“考夫曼”、“作家”、“渥太华”),
    新人(68、“-*”、“华盛顿”、“开发商”、“雷蒙德”),
    新人(79,“亚伯拉罕”、“利科伦”、“开发商”、“雷德蒙”)
    };
    
    听起来您想填充一个列表,然后在foreach循环中读取其值。如果这就是您想要做的,那么问题的核心是:“什么是我的对象的字符串表示?”


    例如,如果您正在调用
    p.ToString()
    ,其中
    p
    是一个
    Person
    ,默认情况下您将获得其类型名称。创建对象时,有时重写
    Person
    的隐含基类的
    ToString()
    方法非常有用,即
    System.Object
    。请注意,当您重写
    ToString()
    方法时,如果您没有重写
    GetHashCode()
    Equals()

    您需要向我们提供该列表的格式,因为您显然只是在扫描字符串的列表/数组。您的列表为空,您创建了4个人,但从未将他们添加到列表中-1请修改问题和代码,这毫无意义。您想读什么?在您的示例中,列表中没有任何内容,但您正在尝试向其中添加字符串。这不起作用,因为它不是字符串列表。我应该在评论之前刷新。
    print
    在C#中不存在。使用
    控制台。改为编写
    。此外,属性的调用与方法不同。除此之外,这是正确的。+1用于在不知道任何C#的情况下正确使用它。@KyleTrauberman是的,但您可以轻松创建一个函数
    print
    ,它可以满足您的需要。正如关于习语的另一个注释,强调@KyleTrauberman的观点:名字和姓氏更可能表示为属性,so
    Console.Write(p.FirstName+“”+p.LastName)
    
    var people = new List<Person>{
        new Person(74, "Brad","Millington","Program Manager", "Milford"),
        new Person(58, "John", "Kaufman", "Author", "Ottawa"),
        new Person(68, "-*", "Washington" , "Developer", "Redmond"),
        new Person(79, "Abraham", "Licoln", "Developer", "Redmond")
    };