我一直试图弄清楚这些构造函数之间是否存在任何差异.假设有一个不带参数的Foo()构造函数,所有这些构造函数都会有相同的结果吗?
public Foo()
: this()
{
blah;
blah;
blah;
}
Run Code Online (Sandbox Code Playgroud)
public Foo()
{
this();
blah;
blah;
blah;
}
Run Code Online (Sandbox Code Playgroud)
public Foo()
{
this = new Foo();
blah;
blah;
blah;
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 32
我会避免分配到this结构中.正如你从其他答案中可以看到的那样,它的可能性很少被人知道(我只知道因为它在规范中出现了一些奇怪的情况).你已经得到它,它没有任何好处 - 在其他地方它可能会改变结构,这不是一个好主意.结构应始终是不可变的:)
编辑:只是为了让人们"流泪"!一点点 - 分配this给与另一个构造函数链接并不完全相同,因为你也可以在方法中做到:
using System;
public struct Foo
{
// Readonly, so must be immutable, right?
public readonly string x;
public Foo(string x)
{
this.x = x;
}
public void EvilEvilEvil()
{
this = new Foo();
}
}
public class Test
{
static void Main()
{
Foo foo = new Foo("Test");
Console.WriteLine(foo.x); // Prints "Test"
foo.EvilEvilEvil();
Console.WriteLine(foo.x); // Prints nothing
}
}
Run Code Online (Sandbox Code Playgroud)