我创建了一个包含3个字段的类:
class Gente
{
int _ID;
string _nome, _sexo;
public Gente()
{
_ID = 0;
_nome = "";
_sexo = "";
}
public int ID
{
set { _ID = value; }
get { return _ID; }
}
public string Nome
{
set { _nome = value; }
get { return _nome; }
}
public string Sexo
{
set { _sexo = value; }
get { return _sexo; }
}
}
Run Code Online (Sandbox Code Playgroud)
然后我从该类声明了一个List,并从该类声明了一个对象,以便我能够添加到List中.
List<Gente> Alunos = new List<Gente>();
Gente professor = new Gente();
Run Code Online (Sandbox Code Playgroud)
我第一次做Alunos.Add(教授); 在列表中它正确地将信息发送到0位置.
但是当我第二次使用新数据覆盖位置0上的所有内容时,除了将新数据添加到新位置之外,1.
Jus*_*ner 13
将两个对象添加到列表中的代码是什么样的?我的猜测是:
Gente professor = new Gente();
professor.Nome = "Fu";
Alunos.Add(professor);
professor.Nome = "Bar";
Alunos.Add(professor);
Run Code Online (Sandbox Code Playgroud)
这是不正确的.将引用类型添加到列表时,只是添加对原始对象的引用.在这种情况下,您将两次引用同一对象.
因此,当您修改第二个对象时...您还要修改第一个对象.
一个简单的单行修复方法是professor在第二次使用之前重新初始化:
Gente professor = new Gente();
professor.Nome = "Fu";
Alunos.Add(professor);
professor = new Gente();
professor.Nome = "Bar";
Alunos.Add(professor);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4335 次 |
| 最近记录: |