【问题标题】:Ref Class vs Ref Struct, what's the difference?Ref Class vs Ref Struct,有什么区别?
【发布时间】: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时,传递的是变量而不是变量的值。无论变量类型的性质如何,这都是正确的。这就是为什么了解自己的理解/猜测很重要的原因。

标签: c# class struct


【解决方案1】:

这一行正在复制结构体。

this.structHouse = structHouse;

您仅在副本上更改number 的值。

【讨论】:

  • 啊,这很有道理。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-23
  • 2010-09-28
  • 1970-01-01
  • 2013-05-04
相关资源
最近更新 更多