我有几个静态字段,需要知道它们最适合的容器:class
或struct
?
public class/struct MySharedFields
{
public static readonly string Field1 = AppConfig.GetValue("Field1");
public static readonly string Field2 = AppConfig.GetValue("Field2");
public static readonly string Field3 = AppConfig.GetValue("Field3");
}
答案 0 :(得分:2)
通常静态课程是要走的路,但它确实没有什么作用。如果需要,您可以在将来添加方法。
public static class MySharedFields
{
public static readonly string Field1 = AppConfig.GetValue("Field1");
public static readonly string Field2 = AppConfig.GetValue("Field2");
public static readonly string Field3 = AppConfig.GetValue("Field3");
}
答案 1 :(得分:1)
您应该使用静态类,因为C#不允许使用静态结构:
public static class MySharedFields
{
public static readonly Field1 = AppConfig.GetValue("Field1");
public static readonly Field2 = AppConfig.GetValue("Field2");
public static readonly Field3 = AppConfig.GetValue("Field3");
}
答案 2 :(得分:1)
当您使用类或结构时,第一次CLR加载Type
类。类型的所有对象都可以通过GetType
方法引用该类型。对象本身仅包含实例字段,所有方法和静态字段都在Type
中。实例方法采用隐式额外参数this
。当您调用实例方法时,对象会将自己传递给方法,该方法在Type
中实际定义。结构和类之间的区别仅在于它们保留字段的位置:类的堆和结构的堆栈。因此,类和struct的静态方法之间没有真正的区别。但是您可以将class标记为static,以防止创建该类的实例。
答案 3 :(得分:0)
C#中的类和结构之间的差异非常小。
我想说,使用一个类,因为这样你可以在需要时随后添加方法。
可能结构可能会有一些性能优势,但如果这不是问题,那么在大多数情况下,类可能是最好的方法。
在您的情况下,您可以将该类设置为静态,除非您有多个实例,或者稍后您希望拥有多个实例。