【发布时间】:2021-04-04 13:17:02
【问题描述】:
在使用 c# 时,有些东西对我来说不是很清楚,希望我能在这里得到一些答案
using System;
public struct SampleStruct {
public float v;
}
public class SampleClass {
public float v;
}
public class Program
{
private float aaa;
private float bbb;
private SampleClass c111 = new SampleClass();
private SampleClass c222 = new SampleClass();
private SampleStruct AAA = new SampleStruct();
private SampleStruct BBB = new SampleStruct();
public void Main()
{
//test int field
aaa = 10;
bbb = aaa;
bbb = 9;
Console.WriteLine("int test: " + aaa);
//test class
c111 = new SampleClass { v = 10 };
c222 = c111;
c222.v = 9;
Console.WriteLine("class test: " + c111.v);
//test struct
AAA = new SampleStruct { v = 10 };
BBB = AAA;
BBB.v = 9;
Console.WriteLine("class struct: " + AAA.v);
}
}
//output
//int test: 10
//class test: 9
//class struct: 10
我的问题是为什么 Class 对象的行为与此处的结构不同 如您所见,我是否将其影响的后一个对象更改为从中复制的对象
【问题讨论】:
-
查找值类型与引用类型。
-
提示:
int是struct(也称为“值类型”)。 (see documentation)。并听从约翰的建议;) -
当你将一个结构(值)对象赋值给一个变量时,会生成一个结构的副本,以便两个对象是分开的。当你将一个类(引用)对象赋值给一个变量时,只是复制了对该对象的引用,所以只有一个对象有两个引用指向它。
标签: c#