默认(struct) - 好风格?

时间:2012-09-14 06:39:08

标签: c# .net coding-style

嗯,这不是一个单身人士,但我不知道是否有一种非常罕见的模式。

例如,框架中无法获得代表控制台应用程序控制台的IWin32Window

public struct ConsoleWindow : IWin32Window
{
    [DllImport("kernel32.dll")]
    private static extern IntPtr GetConsoleWindow();

    IntPtr IWin32Window.Handle
    {
        get { return GetConsoleWindow(); }
    }
}

然后你就这样使用它。

MessageBox.Show(default(ConsoleWindow), "Hello, World!");

我是不是太聪明了?这是“.net方式”吗?

我考虑使用静态只读字段(称为什么?),或只是new ConsoleWindow(),但似乎都没有。

(显然,在这种情况下,性能不是问题,因为Handle只被访问一次。)

1 个答案:

答案 0 :(得分:4)

您可以使用具有私有构造函数和单个实例属性的类。

public class ConsoleWindow : IWin32Window
{
    [DllImport("kernel32.dll")]
    internal static extern IntPtr GetConsoleWindow();

    IntPtr IWin32Window.Handle
    {
       get { return GetConsoleWindow(); }
    }

    private ConsoleWindow(){}

    public static ConsoleWindow Instance
    { 
        get 
        { 
            if (_instance == null) _instance = new ConsoleWindow();
            return _instance;
        }
    }
    private static ConsoleWindow _instance = null;
}

MessageBox.Show(ConsoleWindow.Instance, "Hello, World!");

我相信这是在无法创建静态类时使用的标准单例模式。