Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.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#_List - Fatal编程技术网

C#更改为匹配上一个对象的类对象列表?

C#更改为匹配上一个对象的类对象列表?,c#,list,C#,List,我正试图对一个类(或结构)的所有过去版本进行“归档”。但是,当创建一个类以添加到列表中时,所列出的类的总数似乎会改变以匹配 我的代码是这样的: public class State { public int i; public State(int newI) { i = newI; } } List<State> list = new List<State>; public void NewEntry(int x) { State sta

我正试图对一个类(或结构)的所有过去版本进行“归档”。但是,当创建一个类以添加到列表中时,所列出的类的总数似乎会改变以匹配

我的代码是这样的:

public class State
{
  public int i;

  public State(int newI)
  {
    i = newI;
  }
}

List<State> list = new List<State>;

public void NewEntry(int x)
{
  State state = new State(x); //this is the line in question
  list.Add(state)
}
公共类状态
{
公共国际一级;
公共国家(int newI)
{
i=新i;
}
}
列表=新列表;
公共无效新条目(int x)
{
State State=newstate(x);//这是有问题的行
列表。添加(状态)
}
在执行状态构造函数时,列表中的所有状态都已更改,以使其i与新值x相匹配


除了基本知识和理解之外,我还缺少什么P

嗯。。。从你的例子来看不是很清楚,但让我猜猜问题是什么

将类添加到列表时,可能正在添加引用

使用时:

State x = new State();
State b = x;
框“x”和“b”指向相同的对象,x.i和b.i是相同的内存

如果并且状态是一个结构,那么它就不同了

public **struct** State
{
  public int i;

  public State(int newI)
  {
    i = newI;
  }
}
然后

将复制每个值字段(如int和double),x.i将位于不同于b.i的内存位置


这与您的问题有关吗?

那不是编译代码:
新状态(int X)
那也不是一个结构。如果您将问题行中的
int X
替换为
i
,会发生什么情况?如果您可以提供一个。所以要么代码是错误的(对这个问题来说毫无意义),要么没有问题。当然,它是值类型
struct
还是引用类型
class
,这可能很重要。所以展示真实的代码。结果就是这样!奇怪的是,同样的问题也发生在它还是一个结构的时候。要么我误读了你的答案,要么它不应该作为一个结构出现问题,这是令人困惑的,但在任何情况下,所问的问题已经得到了回答!谢谢,伙计!您尝试过“StateStruct copy=oldStruct;list.Add(copy);”吗?
State x = new State();
State b = x;