【问题标题】:prevent unassigned objects, any reason this is a bad design consideration?防止未分配的对象,有什么理由这是一个糟糕的设计考虑?
【发布时间】:2015-05-08 13:01:55
【问题描述】:

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

为了简化编码,我在所显示表单的构造函数末尾放置了一个“ShowDialog()”调用。这可以防止调用此表单的每个地方都需要类似..

var myModalForm = new MyModalForm(someIdToDisplay);
myModalForm.ShowDialog();

简化,我只需要创建带有Id的模态表单,例如

new MyModalForm(someIdToDisplay);

但通过 ReSharper 检查器,它会返回“由‘新’表达式创建的可能未分配对象”。

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

【问题讨论】:

    标签: c# wpf resharper


    【解决方案1】:

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

    就我个人而言,这听起来像是一个丑陋的设计。构造函数旨在返回一个可用的对象 - 理想情况下,这是他们应该做的所有

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

    public static void ShowForId(int id)
    {
        var form = new MyModalForm(id);
        form.ShowDialog();
    }
    

    那么你的调用代码可以是:

    MyModalForm.ShowForId(someIdToDisplay);
    

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

    【讨论】:

    • @TimSchmelter:谁建议将另一个构造函数调用 within 构造函数?我没有,OP 也没有...... OP 刚刚在其常规构造函数的末尾包含了 ShowDialog 调用,我建议他们不应该这样做。
    • @TimSchmelter:是的,他们在构造函数中添加了ShowDialog() 调用。这与向构造函数添加构造函数调用 ShowDialog() 调用不同......
    • 谢谢....所以我很接近,但你的选择绝对是为了可读性更好,而不仅仅是掩盖它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    相关资源
    最近更新 更多