C# 防止未分配对象,这是一个糟糕的设计考虑因素吗?

C# 防止未分配对象,这是一个糟糕的设计考虑因素吗?,c#,wpf,resharper,code-design,C#,Wpf,Resharper,Code Design,在我的WPF应用程序中,我有几个地方基于记录的给定ID调用一个新表单以显示为模式以查看详细信息。然后它关闭并按预期返回调用源。所有这些都没问题 为了简化编码,我在所显示表单的构造函数末尾添加了一个“ShowDialog()”调用。这就避免了每个被称为表单的地方都需要类似 var myModalForm = new MyModalForm(someIdToDisplay); myModalForm.ShowDialog(); 简化后,我只需要创建带有Id的模态表单,例如 new MyModalF

在我的WPF应用程序中,我有几个地方基于记录的给定ID调用一个新表单以显示为模式以查看详细信息。然后它关闭并按预期返回调用源。所有这些都没问题

为了简化编码,我在所显示表单的构造函数末尾添加了一个“ShowDialog()”调用。这就避免了每个被称为表单的地方都需要类似

var myModalForm = new MyModalForm(someIdToDisplay);
myModalForm.ShowDialog();
简化后,我只需要创建带有Id的模态表单,例如

new MyModalForm(someIdToDisplay);
但是通过ReSharper检查器,它返回“可能是由‘new’表达式创建的未分配对象”

我知道垃圾收集器在完成后会得到它,但作为一个模态形式,一旦完成,我就不需要对它做任何其他事情。那么,这是坏的,还是好的,忽略这类警告考虑。除此之外,应用程序中的其他一切都可以正常工作

为了简化编码,我在所显示表单的构造函数末尾添加了一个“ShowDialog()”调用

就我个人而言,这听起来像是一个丑陋的设计。构造函数被设计为返回一个可用的对象——理想情况下,这就是它们应该做的一切

我会在
MyModalForm
中将其更改为静态方法:

public static void ShowForId(int id)
{
    var form = new MyModalForm(id);
    form.ShowDialog();
}
那么您的呼叫代码可以是:

MyModalForm.ShowForId(someIdToDisplay);

现在很清楚它想做什么:目的是显示表单,而不仅仅是创建表单。

@TimSchmelter:谁建议在构造函数中再调用一个构造函数?我没有,手术也没有。。。OP在其常规构造函数的末尾包含了
ShowDialog
调用,我建议他们不应该这样做。@TimSchmelter:是的,他们向构造函数添加了
ShowDialog()
调用。这与向构造函数添加构造函数调用和
ShowDialog()
调用不同……谢谢。。。。所以我很接近,但是你的选择对于可读性来说肯定更好,而不仅仅是掩盖它。