public enum SubStorage
{
eSubStorageAll,
eSubStorageEquipment,
eSubStorageBag,
eSubStorageBank,
}public class ItemDef
{
    public static const UInt16 MAX_INVENTORY_SLOT = 150;
    public static const UInt16 MAX_BUYBACK_SLOT_SIZE = 12;
    public static const UInt16 MAX_CONTAINER_SIZE = 50;
    public static const UInt16 MAX_BANK_SLOT_SIZE = 50;
}这两种类型的数据声明方式,请问谁的开销更大一下。。我觉得是用类, 不知道C#是怎么存储enum数据类型的, 请高手分析下 enum类型的对象模型,谢谢!

解决方案 »

  1.   

    你是不是问Struct和Class啊要是枚举和类的话,我觉着是类
      

  2.   

    不知道C#是怎么存储enum数据类型的, 请高手分析下 enum类型的对象模型,谢谢!
      

  3.   

    恩,值类型开销小,可以用sizeof关键字就大小
      

  4.   

    一样的,enum中的项是常数,你的类中的项也是常数,常数是编译时就处理完成的,运行时没有开销。另外,你的这句是错的:    public static const UInt16 MAX_INVENTORY_SLOT = 150;正确的写法是:    public const UInt16 MAX_INVENTORY_SLOT = 150;常量是不能声明为 static 的,倒是你的类上应该加个 static,防止实例化和继承
      

  5.   


    public enum SubStorage
    {
        eSubStorageAll,
        eSubStorageEquipment,
        eSubStorageBag,
        eSubStorageBank,
    }public class ItemDef
    {
    const int  eSubStorageAll  = 1,
    const int      eSubStorageEquipment =1 ,
    const int      eSubStorageBag = 1,
    const int      eSubStorageBank =1
    }这样呢
      

  6.   

    enum是值类型,
    类是引用型.
      

  7.   

    可以做个试验 我做的试验是类性能比较好,另外 枚举可不是常量,常量在一些地方使用的,在反汇编中是不可能的找到这个常量的,而枚举是可以在使用的地方进行反汇编的,可以看到枚举的变量,
    从Ildasm 中可以看到枚举定义与你们想的不一样的,从其中可以看到枚举的类型性能比常量低
      

  8.   


    假设:SubStorage s = SubStorage.eSubStorageAll;“枚举可不是常量”,是针对 s 说的,还是针对 SubStorage.eSubStorageAll 说的?