C# 将字符串数组分配给列表

C# 将字符串数组分配给列表,c#,arrays,list,C#,Arrays,List,运行此代码时,我遇到了堆栈溢出 class Students { public int SID { get { return SID; } set { SID = value; } } public string SName { get { return SName; } set { SName = value; } } } 问题位于名称中的foreachstring中。。我无法将字符串数组存储到我的数据结构中 提前谢谢 class Program {

运行此代码时,我遇到了堆栈溢出

class Students
{
    public int SID { get { return SID; } set { SID = value; } }
    public string SName { get { return SName; } set { SName = value; } }      
}
问题位于名称中的foreachstring中。。我无法将字符串数组存储到我的数据结构中 提前谢谢

 class Program
 {
     static void Main(string[] args)
     {
         List<Students> sList = new List<Students>();           
         string[] names = new string[5]  {"Matt", "Joanne", "Robert"};
         System.Console.WriteLine("{0} words in text:", names.Length);

         foreach (string s in names)
         {
             Students st = new Students();
             st.SName = s;
             sList.Add(st);
             System.Console.WriteLine("test{0}",s);
         }

         foreach (Students sn in sList) Console.WriteLine(sn);

         Console.ReadLine();
     }
 }
将代码更改为:

public int SID { get; set; }
或使用字段:

private int _SID;
public int SID 
{ 
  get 
  { 
     return _SID; 
  }
  set 
  { 
     _SID = value; 
  } 
}
将代码更改为:

public int SID { get; set; }
或使用字段:

private int _SID;
public int SID 
{ 
  get 
  { 
     return _SID; 
  }
  set 
  { 
     _SID = value; 
  } 
}
想一想那里发生了什么? 想一想那里发生了什么? 想一想那里发生了什么? 想一想那里发生了什么? 想一想那里发生了什么? 想一想那里发生了什么? 想一想那里发生了什么? 想一想那里发生了什么? 想一想那里发生了什么

想一想那里发生了什么? 想一想那里发生了什么? 想一想那里发生了什么? 想一想那里发生了什么? 想一想那里发生了什么? 想一想那里发生了什么? 想一想那里发生了什么? 想一想那里发生了什么?
想一想那里发生了什么?

SID属性不是问题所在,因为您的代码从未调用过它。SName属性是导致堆栈溢出的属性。换成

公共字符串SName{get;set;}

因此它不引用自身

名称声明为字符串[5],但仅用3个名称初始化。将其更改为字符串[3]或再添加两个名称

您还可以找到Console.WriteLinesn;为每个学生输出相同的类名AppName.Students,而不是有用的学生信息。通过在学生课堂上添加类似的内容可以解决这个问题

公共重写字符串ToString{return SID++SName;}


这将覆盖作为每个.NET对象一部分的默认ToString方法,并显示您指定的内容。为了使本例起作用,您还需要将SID属性更新为公共字符串SID{get;set;},以避免更多堆栈溢出。

SID属性不是问题所在,因为您的代码从未调用过它。SName属性是导致堆栈溢出的属性。换成

公共字符串SName{get;set;}

因此它不引用自身

名称声明为字符串[5],但仅用3个名称初始化。将其更改为字符串[3]或再添加两个名称

您还可以找到Console.WriteLinesn;为每个学生输出相同的类名AppName.Students,而不是有用的学生信息。通过在学生课堂上添加类似的内容可以解决这个问题

公共重写字符串ToString{return SID++SName;}


这将覆盖作为每个.NET对象一部分的默认ToString方法,并显示您指定的内容。为了使本例起作用,您还需要将SID属性更新为公共字符串SID{get;set;},以避免更多堆栈溢出。

您是否面临空引用异常您是否面临空引用异常在google上搜索关键字recursion,您会被告知您是指递归吗?:D在谷歌上搜索关键字递归,你会被告知你是指递归吗?:D