【发布时间】:2013-01-23 18:25:36
【问题描述】:
显然,您可以从结构中的任何位置(但不能在类中)更改 this 值:
struct Point
{
public Point(int x, int y)
{
this = new Point();
X = x; Y = y;
}
int X; int Y;
}
我以前从未见过,也从未需要它。为什么有人想要这样做? Eric Lippert reminds us 必须有理由实施一项功能。什么伟大的用例可以证明这一点?有没有什么场景是无价的? 我找不到任何关于它的文档1。
此外,对于调用构造函数,已经有一种更广为人知的替代语法,所以这个特性有时是多余的:
public Point(int x, int y)
: this()
{
X = x; Y = y;
}
我在 Jeffrey Richter 的 CLR via C# 4th edition 的示例中发现了此功能。
1) 显然它在 C# specification 中。
【问题讨论】:
-
如果构造函数是私有的怎么办?并不是说这是一个很棒的主意……但我想这是一个用例。
-
它似乎是对象的廉价替代品?
-
任何让我想去的问题,“没门!让我们通过 LinqPad 运行它。”在我的书中是一个很棒的。
-
对于@EricLippert 来说似乎是一个完美的机会来说明此功能的合理性。
-
我想我找到了一个用例。在一个方法中,您可以将结构“归零”。 (+1 发布这个,不敢相信 11 年后我仍然学习新的 c# 东西)。编辑:在构造函数中使用它是毫无意义的。
标签: c# this value-type