我今天带着一个奇怪的问题来到这里。 有没有办法可以使用非静态类,如静态?
即: 我们有以下课程:
public class Parameters
{
public String LoadType { get; set; }
public Parameters (String inLoadType)
{
LoadType = inLoadType;
}
}
public class MainClass
{
public Parameters Parameters { get; set; }
public MainClass(String inLoadType)
{
Parameters = new Parameters(inLoadType);
}
}
现在我们实例化MainClass,然后在另一个不是我想要访问LoadType的MainClass的地方。
它应该是threadSafe,操作也需要很长时间,这就是我不能简单地使用锁并使其静止的原因。
我想要访问该变量的类是静态的,我想在Parameters类中使用静态Event的变通方法,并且调用该事件的任何人都将获得实例化类的值或类似的东西。 关于它的任何其他想法旁边作为参数传递给我需要的静态方法?
听起来像是一个愚蠢的问题,但我只是想知道是否可能。
答案 0 :(得分:1)
想象一下,您有两个 Parameters
个实例
Parameters one = new Parameters("One");
Parameters two = new Parameters("Two");
然后你打电话:
String result = SomeWeirdBlackMagicCallOfLoadType();
预期结果是什么? "One"
或"Two"
?为了解决这个问题
问题,您可以将Parameters
变成单曲(仅限一个实例),因此调用将是
String result = Parameters.Instance.LoadType;
但是,如果数据不依赖于实例,我建议将static
视为static
。如果是长操作,线程安全,您可以使用专为此设计的Lazy<String>
:
public class Parameters {
private static Lazy<String> s_LoadType = new Lazy<string>(() => {
....
return "bla-bla-bla";
});
public static String LoadType {
get {
return s_LoadType.Value;
}
}
...
}