无法使用“这个”;在成员初始值设定项中?
这合法吗?它是否包含隐藏的错误或缺陷? Visual Studio 不会给出任何错误或警告,但 ReSharper 会给出:
/// <summary>
/// immutable tuple for two
/// </summary>
public class Pair<TValue1, TValue2> : Singleton<TValue1>
{
public TValue2 Value2 { get; private set; }
public Pair(TValue1 value1, TValue2 value2, Func<Pair<TValue1, TValue2>, String> toStringFunc)
: this(value1, value2, () => toStringFunc(this)) { } //Red light
}2> : Singleton<TValue1>
Is this legal? Does it contain a hidden bug or flaw? Visual studio does not give any errors or warnings but ReSharper does:
/// <summary>
/// immutable tuple for two
/// </summary>
public class Pair<TValue1, TValue2> : Singleton<TValue1>
{
public TValue2 Value2 { get; private set; }
public Pair(TValue1 value1, TValue2 value2, Func<Pair<TValue1, TValue2>, String> toStringFunc)
: this(value1, value2, () => toStringFunc(this)) { } //Red light
}2> : Singleton<TValue1>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我很确定我听说这是一个编译器错误,在下一版本中修复。我刚刚启动我的 4.0 VM,使用一个更简单的测试用例:
在 VS2008 中工作,但在 VS2010 中工作:
I'm pretty sure I've heard that this is a compiler bug, fixed in the next release. I'm just firing up my 4.0 VM, with a simpler test-case:
works in VS2008, but in VS2010:
这是 C# 3 编译器中的一个错误,已在 C# 4 中修复。
编辑:
在基本构造函数中使用 lambda 表达式的极端情况< /a>
This is a bug in the C# 3 compiler that is fixed in C# 4.
Edit:
Corner case in using lambdas expression in base constructor
你的构造函数将永远循环,直到弹出堆栈。这是因为它不断递归地调用自身。尝试将其拆分:
Your constructor will loop forever, until it pops the stack. This is because it keeps calling itself recursively. Try splitting it up: