使用下面的代码,Resharper 会引发“构造函数中的虚拟成员调用”警告:
public class UserDetailViewModel : Screen
{
public UserDetailViewModel()
{
// DisplayName is a virtual member of Screen
DisplayName = "User Details";
}
}
而如果我将代码更改为这样,警告就会消失:
public class UserDetailViewModel : Screen
{
public UserDetailViewModel()
{
SetName();
}
private void SetName()
{
DisplayName = "User Details";
}
}
为什么一个发出警告而另一个不发出警告?第二种方法是否正确,或者它是否超出了 ReSharper 可以检测为潜在危险的限制?
最佳答案
这只是 ReSharper 的一个限制。它应用了一系列启发式方法来查找可以发出警告的代码,但它不会找到所有内容。这样做需要解决停机问题。这是不可行的。
这里的教训很简单:
没有警告并不意味着没有什么可警告的。
关于c# - 构造函数中的虚拟成员调用 - 为什么一个可以,另一个不行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7686503/