Tag: static

C# – 参数在静态方法中是否安全?

这个方法是线程安全的吗? 好像它不是…… public static void Foo(string _str, Guid _id) { _str = _str + _id.ToString(); /* Do Stuff */ return }

如何只读静态字段为空?

所以这是我的一个课程的摘录: [ThreadStatic] readonly static private AccountManager _instance = new AccountManager(); private AccountManager() { } static public AccountManager Instance { get { return _instance; } } 如您所见,它是每个线程的单例 – 即该实例标有ThreadStatic属性。 该实例也被实例化为静态构造的一部分。 既然如此,当我尝试使用Instance属性时,我的ASP.NET MVC应用程序中是否有可能出现NullReferenceException?

ASP.NET MVC中的HttpClient Singleton实现

在www.asp.net上阅读此博客文章和官方说明后 : HttpClient旨在实例化一次,并在应用程序的整个生命周期中重复使用。 特别是在服务器应用程序中,为每个请求创建一个新的HttpClient实例将耗尽重负载下可用的套接字数量。 这将导致SocketException错误。 我发现我们的代码在每次调用时都处理了HttpClient。 我正在更新我们的代码,以便我们重用HttClient,但我关心的是我们的工具但不是线程安全的。 以下是新代码的当前草案: 对于unit testing,我们为HttpClient实现了一个包装器,消费者调用包装器: public class HttpClientWrapper : IHttpClient { private readonly HttpClient _client; public Uri BaseAddress { get { return _client.BaseAddress; } set { _client.BaseAddress = value; } } public HttpRequestHeaders DefaultRequestHeaders { get { return _client.DefaultRequestHeaders; } } public HttpClientWrapper() { _client = new HttpClient(); } public […]

如何在静态方法中获取当前类的名称?

通常我可以调用this.GetType(),但我无法在静态方法中访问它。 我们怎么检查呢?

ConfigurationManager和静态类

我想使用ConfigurationManager从静态类访问一些字符串值。 但是,我需要特别处理缺少值或空值的存在。 现在我正在使用类型初始化器,比如 private static readonly string someStr = ConfigurationManager.AppSettings[“abc”]; 做这个工作。 但是,如果App.config中不存在具有键“abc”的字符串,则执行将继续使用null引用代替someStr 。 那么,什么是在初始化时validation此值的最佳方法? 一个静态构造函数,我在其中初始化值然后检查有效性? 我听说要避免使用静态构造函数,并在可能的情况下用类型初始化程序替换。

为什么静态类不能有非静态方法和变量?

当非静态类可以有静态方法和变量时,为什么静态类不能有非静态方法和变量? 在非静态类中使用静态方法和变量有什​​么好处? 虽然在非静态类中使用静态构造函数是可以理解的。

INotifyPropertyChanged和静态属性

我想把自己绑在一个简单的问题上。 我有一个实现INotifyPropertyChanged的类。 某些实例属性的getter使用静态属性,因此如果静态属性发生变化,它们的值可能会发生变化? 这是一个简化的例子。 class ExampleClass : INotifyPropertyChanged { private static int _MinimumLength = 5; public static int MinimumLength { get { return _MinimumLength; } set { if (_MinimumLength != value) { _MinimumLength = value; //WHAT GOES HERE } } } private int _length = -1; public int length { get { return (_length > […]

为什么必须在静态类中定义C#扩展方法?

我知道C#扩展方法必须是静态的。 我不明白为什么这些扩展不能在非静态类或通用类中定义? 更新:我对此设计决策背后的原因感兴趣。

C#:静态object.Equals如何检查是否相等?

假设你有两个不同的类,每个类都有自己的Equals实现; 使用哪一个? 如果只有一个人有一个怎么办? 或者都没有? 以下任何一行是否相同? object .Equals( first, second ) first .Equals( second ) second .Equals( first ) 我猜测前两个可能是等价的,但我真的不知道。 它到底是做什么的?

C#静态类为何使用?

可能重复: 何时在C#中使用静态类 我将我的类设置为静态很多,但我不确定何时使用静态或不使用静态或不同之处。 有人可以解释一下吗?