好好利用枚举

       这段时间手里有个有关订单的项目,订单一般有个状态的,以前很多要时候都会想到订单的状态就那几个种,就把它写死吧,不用一个数据库表了,太浪费资源了,但写死了用一个数字来代表一种订单状态,这样在编码时还要记得什么数字代码什么状态,如果不小心把它写错了,会导致数据出错。
      后来想到.NET有个枚举,这么好的东西为何不用上来呢,这不但可以方便以后的代码维护,也方便编码。
None.gif public   enum  OrderState
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
ExpandedSubBlockStart.gifContractedSubBlock.gif    
/**//// <summary>
InBlock.gif    
/// 无效状态
ExpandedSubBlockEnd.gif    
/// </summary>

InBlock.gif    Invalid = 0,
ExpandedSubBlockStart.gifContractedSubBlock.gif    
/**//// <summary>
InBlock.gif    
/// 客户询价
ExpandedSubBlockEnd.gif    
/// </summary>

InBlock.gif    CustomerQuery = 1,
ExpandedSubBlockStart.gifContractedSubBlock.gif    
/**//// <summary>
InBlock.gif    
/// 客户落单
ExpandedSubBlockEnd.gif    
/// </summary>

InBlock.gif    CustomerOrdered = 2,
ExpandedSubBlockStart.gifContractedSubBlock.gif    
/**//// <summary>
InBlock.gif    
/// 客户付款
ExpandedSubBlockEnd.gif    
/// </summary>

InBlock.gif    ReceiverCustomerPayment = 4,
ExpandedSubBlockStart.gifContractedSubBlock.gif    
/**//// <summary>
InBlock.gif    
/// 向供货商订货
ExpandedSubBlockEnd.gif    
/// </summary>

InBlock.gif    SupplierOrdered = 8,
ExpandedSubBlockStart.gifContractedSubBlock.gif    
/**//// <summary>
InBlock.gif    
/// 供货商确认货期
ExpandedSubBlockEnd.gif    
/// </summary>

InBlock.gif    SupplierOrderTerm = 16,
ExpandedSubBlockStart.gifContractedSubBlock.gif    
/**//// <summary>
InBlock.gif    
/// 收到货品
ExpandedSubBlockEnd.gif    
/// </summary>

InBlock.gif    RecieverGoods = 32,
ExpandedSubBlockStart.gifContractedSubBlock.gif    
/**//// <summary>
InBlock.gif    
/// 客户取消订单
ExpandedSubBlockEnd.gif    
/// </summary>

InBlock.gif    CustomerCanceled = 64,
ExpandedSubBlockStart.gifContractedSubBlock.gif    
/**//// <summary>
InBlock.gif    
/// 供货商取消订单
ExpandedSubBlockEnd.gif    
/// </summary>

InBlock.gif    SupplierCancelded = 128
ExpandedBlockEnd.gif}
但要从UI层看这些状态怎么处理呢?
利用switch case
None.gif public   static   string  GetOrderStateString(OrderState state)
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        
switch (state)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
case OrderState.Invalid:
InBlock.gif                
return "无效值";
InBlock.gif            
case OrderState.CustomerOrdered:
InBlock.gif                
return "客户下单";
InBlock.gif            
case OrderState.CustomerCanceled:
InBlock.gif                
return "客户取消订单";
InBlock.gif            
case OrderState.CustomerQuery:
InBlock.gif                
return "客户询价";
InBlock.gif            
case OrderState.ReceiverCustomerPayment:
InBlock.gif                
return "客户已付款";
InBlock.gif            
case OrderState.RecieverGoods:
InBlock.gif                
return "订单到货";
InBlock.gif            
case OrderState.SupplierCancelded:
InBlock.gif                
return "供货商取消";
InBlock.gif            
case OrderState.SupplierOrdered:
InBlock.gif                
return "已向供货商订货";
InBlock.gif            
case OrderState.SupplierOrderTerm:
InBlock.gif                
return "供货商确认货期";
ExpandedSubBlockEnd.gif        }

InBlock.gif        
return "";
ExpandedBlockEnd.gif    }

如果以后还有更多的订单状态就修改这个枚举和一个方法就行了,这么方便的东西为何就不用到我的程序中呢,我们在编码中,要想尽方法使代码简单、易用、易维护。
枚举中有两个很实用的方法
1、GetHashCode()   //返回该实例的值的哈希代码
2、ToString()           //将此实例的值转换为其等效的字符串表示

这两个方法在编码的时候会用到,GetHashCode()这个方法使用机会会更多。
有前枚举的使用,我得出以上一点心得,与大家共享一下。

转载于:https://www.cnblogs.com/SouthSea/archive/2007/08/13/854317.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,让我为您解答。 首先,枚举是一种通过列举所有可能情况来解决问题的方法。因此,我们可以使用枚举来构造我们想要的集合,并使用自定义排序来对其进行排序。 假设我们想要构造一个由整数组成的集合,并按照以下规则进行排序: 1. 集合中的所有奇数应该排在偶数之前。 2. 奇数应该按照从大到小的顺序排列。 3. 偶数应该按照从小到大的顺序排列。 为了实现这个排序,我们可以定义一个枚举类型,用于表示一个数字是奇数还是偶数。然后,我们可以定义一个比较函数,该函数接受两个数字并根据上述规则比较它们。 以下是一个示例代码: ```python from enum import Enum class NumberType(Enum): ODD = 1 EVEN = 2 def compare_numbers(x, y): if x % 2 == 0 and y % 2 == 1: return 1 elif x % 2 == 1 and y % 2 == 0: return -1 elif x % 2 == 1 and y % 2 == 1: return y - x else: return x - y numbers = [5, 1, 8, 3, 6, 2, 7, 4] numbers.sort(key=lambda x: (NumberType(x % 2), x), cmp=compare_numbers) print(numbers) ``` 在上面的代码中,我们首先定义了一个枚举类型 `NumberType`,用于表示一个数字是奇数还是偶数。然后,我们定义了一个比较函数 `compare_numbers`,该函数接受两个数字并根据上述规则比较它们。最后,我们使用 `sort` 函数对集合进行排序,其中 `key` 参数用于根据数字的类型和值进行排序,`cmp` 参数用于使用我们定义的比较函数进行比较。 希望这可以解答您的问题。如果您有任何其他问题,请随时问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值