Windows Presentation Foundation
.NET Framework 的一部分,它提供统一的编程模型,用于在 Windows 上构建业务线桌面应用程序。
128 个问题
你好
a)
public static class Logger
{
public static void Write(string message) => Log.Write(message);
public static void Close() => Log.Close();
private static LogIntern Log = new LogIntern();
public static int CheckIntervalHours { get; set; } = 1;
public static string LogDirPath = "log";
private class LogIntern
b)
public partial class MessageBoxYes_No : Window, ICommand
{
public string Message { get; set; }
public string Header { get; set; }
private string Result;
public event EventHandler CanExecuteChanged;
public bool CanExecute(object parameter) => true;
//public void Execute(object parameter) => ExitMessageBox((parameter != null) ? parameter.ToString() : string.Empty);
public void Execute(object parameter)
{
ExitMessageBox((parameter != null) ? parameter.ToString() : string.Empty);
}
public MessageBoxYes_No()
{
InitializeComponent();
this.DataContext = this;
}
public static string ShowDialog(string msg, string questionHeader = "Information...")
{
var msgBox = new MessageBoxYes_No() { Message = msg, Header = questionHeader };
msgBox.ShowDialog();
return msgBox.Result;
}
是什么原因,如果我定义一个类静态或只定义一个函数有什么优势。
static 如果我想为我的应用程序使用全局单个实例。SingleTon模式。
你的经验是什么,什么是最佳实践?
最简单的方法是声明所有静态内容,就像我的示例 Logger 一样。
Note:此问题总结整理于 : C# - WPF App static - class or only function
静态类/成员和非静态类/成员之间的主要区别在于静态类不能实例化。因此,我们使用类名本身来访问静态类的成员。Singleton 是一个非静态类,它只允许创建自己的一个实例,因此它可以实现接口或从有用的基类派生。
在内存的使用中,静态和非静态方法在第一次加载后都驻留在内存中,区别在于非静态方法由 GC 回收。
Singleton 的两个主要优点:(源自 在 C# 中实现 Singleton)
由于实例是在 Instance 属性方法中创建的,因此该类可以执行其他功能(例如,实例化子类),即使它可能会引入不受欢迎的依赖项。
在对象请求实例之前,不会执行实例化;这种方法称为延迟实例化。延迟实例化可避免在应用程序启动时实例化不必要的单例。
一般来说,单例比静态类更有优势,如果你擅长单例,请使用单例模式,如果你只是使用一个简单的工具类,就使用静态类。
如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。
注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。