确实,在你不希望以某种奇怪的方式,如GetType(......)”进行思考之前,没有任何缺点。
然而,从纯净的角度来说,财产通常比较清洁,这被认为难以揭开一个领域。
FxCop将警告你,这不是一件好事,但是没有缺点。
如果你想要做到简短但又干净,你可以公正使用自动财产:
public static IUnityContainer Container { get; set; }
然而,自编3版以来,自动财产才投入使用。
A possible drawback that can happen is if you or someone pass that field byref in some function, for example, Interlocked.Exchange(ref MyClass.MyStaticField, null);
It will not work anymore if you change it with a property in the future, so you should be careful in not passing that field by reference. If you just use a property from the beginning you cannot have this problem.
This problem cannot happen with static readonly
fields, they cannot be passed by reference. Using static readonly fields is quite common.
绝对不能使用田地而不是使用地物的情况是,你有一等地继承沼泽地,用于重塑(RPC,远距离程序电话)。
我在此举了一个例子,正如我所说的那样,这不是你的情况,因为问题涉及的领域,而不是静态的领域。
public class MyClass :
MarshalByRefObject
{
public int MyValue;
}
class Program
{
static void Main(string[] args)
{
var obj = new MyClass();
// This will give you warning CS1690: Accessing a member on MyValue may cause a runtime exception because it is a field of a marshal-by-reference class
Console.WriteLine(obj.MyValue.ToString());
}
}
远距离程序电话只使用方法和特性,因此,汇编者向您发出警告,因为可在另一个申请人内或通过另一个程序或另一个电脑,例如通过TCP/IP。