gpt4 book ai didi

c# - 静态类与类的实例

转载 作者:行者123 更新时间:2023-11-30 14:03:41 24 4
gpt4 key购买 nike

我有一个静态类,我用它来访问我的公共(public)属性(整个应用程序的全局属性)和我在应用程序运行期间使用的方法。例如,我在静态类中设置了一些属性,在应用程序运行时我可以从属性中获取值。

但我可以用单例模式创建非静态类并以相同的方式使用它。

问题:哪种方法对我来说是正确的?

最佳答案

下面的示例显示您可以将接口(interface)与单例类一起使用(这对于静态类是不可能的。)

比起大量静态方法/属性或几个静态类,我更喜欢这种模式。

这些接口(interface)可以提供主题特定的设置,这些设置甚至可以用作其他方法或类的参数,而这些类不需要知道设置的来源,只要遵守约定即可。

public sealed class Settings : IUserStettings, IOSettings
{
static readonly Settings instance = new Settings();

static Settings(){ }

Settings(){ }

public static Settings Instance
{
get { return instance; }
}

//-- interface implementation

public string UserName
{
get { throw new NotImplementedException(); }
}

// ---etc...

public string filename
{
get { throw new NotImplementedException(); }
}

//-- interface implementation
}


public interface IOSettings
{
string disk {get;}
string path { get; }
string filename { get; }
}

public interface IUserStettings
{
string UserName { get; }
string Password { get; }
}

这可以以一种简单的方式使用:

    IOSettings iosettings = Settings.Instance as IOSettings;

if(iosettings!=null){
Filereader.ReadData(IOSettings iosettings);
}

    IUserSettings usersettings = Settings.Instance as IUserSettings;

if(usersettings!=null){
UserManager.Login(IUserSettings usersettings);
}

关于c# - 静态类与类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3691576/

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