gpt4 book ai didi

c# - default(struct) - 好风格?

转载 作者:行者123 更新时间:2023-11-30 21:04:23 25 4
gpt4 key购买 nike

嗯,这不是真正的单例,但我不知道是否有这种罕见的东西的模式。

例如,框架中没有办法获取表示控制台应用程序控制台的 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 只被访问一次。)

最佳答案

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

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!");

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

关于c# - default(struct) - 好风格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12419321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com