【发布时间】:2017-05-27 16:12:14
【问题描述】:
public struct StructHouse{
public int number;
}
public class ClassHouse{
public int number;
}
public class Test{
public TestForStruct testForStruct;
public ClassHouse classHouse = new ClassHouse();
public StructHouse structHouse = new StructHouse();
SendRef1(ref classHouse);
testForStruct.SendRef2(ref structHouse);
}
public class TestForStruct{
public StructHouse structHouse;
public void (ref classHouse);
public void SendRef2(ref StructHouse structHouse){
this.structHouse = structHouse;
this.structHouse.number = 1; //THIS DOESN'T UPDATE THE VALUE FOR 'Test'
//BUT IT DOES UPDATE IF I SEND REF CLASS INSTEAD OF REF STRUCT
}
e:如果我在“SendRef1”中更改“数字”的参考值,则该值会在 Test 类中更新,但在更改 SendRef2 中的值时不会更新。谁能解释一下?
提前致谢。
【问题讨论】:
-
在不了解自己的C#知识的情况下,答案应该是“没有区别”。 您认为差异可能是什么?
-
@TimonPost 很抱歉,但这并没有让我明白。
-
@Damien_The_Unbeliever 我对 C# 并不陌生,但我从未想过其中的区别,也没有在网上找到对我有帮助的解释。
-
当你使用
ref时,传递的是变量而不是变量的值。无论变量类型的性质如何,这都是正确的。这就是为什么了解自己的理解/猜测很重要的原因。