从C#中的结构返回"this"会发生什么?

Ale*_*sky 2 .net c# struct

好奇,当你从C#中的结构中返回关键字this时会发生什么?

例如:

public struct MyStruct 
{
  // ... some constructors and properties 1-3

  public MyStruct Copy()
  {
     return MyStruct(Property1, Property2, Property3);
  }

  // vs

  public MyStruct This()
  {
     return this;
  }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 16

它返回值的独立副本.换一种说法:

MyStruct x = new MyStruct();
y = x;
Run Code Online (Sandbox Code Playgroud)

就好像

MyStruct x = new MyStruct();
y = x.This();
Run Code Online (Sandbox Code Playgroud)

这真的很无趣.

请记住,"值"基本上是"构成与结构中的字段有关的所有内容".如果这些字段是引用,则将复制引用值(而不是它们引用的对象).如果它们是其他值类型,则只会复制这些值.


奇怪的事实:在结构中,你可以重新分配this:

this = new MyStruct();
Run Code Online (Sandbox Code Playgroud)

请不要那样做:)

  • @Reed:你想知道什么是真的邪恶?如果您的字段是只读的,它甚至可以工作! (5认同)