Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 编码:使用Struct作为硬代码值(常量)的DataUtility/库_C#_Struct_Constants - Fatal编程技术网

C# 编码:使用Struct作为硬代码值(常量)的DataUtility/库

C# 编码:使用Struct作为硬代码值(常量)的DataUtility/库,c#,struct,constants,C#,Struct,Constants,使用结构作为硬编码值的数据库可以吗?有时我们无法避免硬编码,尽管最好将其放在xml文件或数据库表中,但有时由于某些原因不可能 public struct BatchStatus { public const string Submitted = "0901XX"; public const string Active = "62783XY"; public const string Inactive = "S23123"; } 然后我就这样用 switch (b

使用结构作为硬编码值的数据库可以吗?有时我们无法避免硬编码,尽管最好将其放在xml文件或数据库表中,但有时由于某些原因不可能

 public struct BatchStatus
 {
    public const string Submitted = "0901XX";
    public const string Active = "62783XY";
    public const string Inactive = "S23123";
 }
然后我就这样用

 switch (batchStatus) // enums doesnt work in switch case
{
     case BatchStatus.Submitted:
         new Batch().Submit(); break;
    case BatchStatus.Inactive:
        new Batch1().Activate(); break;
    case BatchStatus.Active
        new Batch2().Deactivate(); break;

}
如果您使用的是C#2.0及更高版本,则应该使用静态类。在C#2.0之前,您可以使用一个类,只需添加一个
private
default构造函数即可确保中的类永远不会实例化

C#2.0及更高版本

public static class BatchStatus
{
  public const string Submitted = "0901XX";
  public const string Active = "62783XY";
  public const string Inactive = "S23123";
}
C#1.0-1.2

public class BatchStatus
{
  public const string Submitted = "0901XX";
  public const string Active = "62783XY";
  public const string Inactive = "S23123";

  private BatchStatus()
  {

  }
}

静态类仍然是引用类型吗?结构是值类型,保存在堆栈中,这意味着它比保存在堆栈中的类定位更快。静态类永远无法实例化,并且类的所有成员都是静态的。类型是引用类型这一事实与此无关,因为它的实例永远不会存在于任何地方。不在堆栈或堆上。@CSharpNood,没问题,很高兴我能帮上忙。我在回答中忽略了这一点,但是在注释
“enums在开关情况下不起作用”
中你是什么意思?如果BatchStatus是这样的enum:enum BatchStatus{0901XX,62783XY},并将其放在case语句中,如下所示:case BatchStatus.62783XY.ToString():new Batch().Submit()它会引发异常