我对 C# 中静态属性的多线程访问风险感到有些困惑。
public class MyClass
{
public static MyClass Static
{
get
{
var c = new MyClass();
c.SomeProperty = "12345";
c.OtherProperty = DateTime.Now.ToString();
return c;
}
}
}
这个示例类提供了一个静态属性,用于创建 MyClass 的新实例,
像一个方法:
public class MyClass
{
public static MyClass Static()
{
var c = new MyClass();
c.SomeProperty = "12345";
c.OtherProperty = DateTime.Now.ToString();
return c;
}
}
显然,该属性不是 MyClass 实例的“存储”框,但它的行为类似于静态方法(如果我阅读了一篇好的 msdn 文章,它是完全线程安全的)。
我的问题是:我使用这个概念会冒险吗?特别是在网络或多线程环境中?
使用它没有特别的实用性,仅用于简单的阅读和清理代码:
MyClass.Static.SomeProperty = "Something";
比
MyClass.Static().SomeProperty = "Something";
所有帮助将不胜感激
谢谢