最新评论

共3页: 1 2 3 下一页 
361741352 2012-05-27 09:42
SQLServer2005技术内幕T-SQL查询的代码 能发给我一份吗? 361741352@qq.com
Baker Wang 2010-07-19 11:35
受教受教,谢谢分享。 枚举成员,显示赋值。 常量,Readonly
!null 2010-07-18 14:48
呵呵,这个问题不错,不过一般我都是整个解决方案重新编译过去的,哈哈!
龙心 2010-06-04 13:17
谢谢分享,以后用的时候要特别注意一下
tandly 2010-06-03 20:24
注意 使用枚举时千万别按照默认赋值 拿 c# 中的 DayOfWeek 为例 public enum DayOfWeek { Sunday = 0, Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6, } 在为创建枚举成员的时候即为其赋值 在系统开发和维护过程中 增加或者删除一个成员时使用新的枚举数值就不会引发问题了 千万别这样 public enum DayOfWeek { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, } 否则就遇到你这样的郁闷事儿
Ivony... 2010-06-03 12:42
直接用字符串做标识什么事情都没了。 枚举是有意义,但更多时候,字符串标识更适合。
上山打老虎 2010-06-02 10:55
挺有用的
blackcat 2010-06-02 10:16
@刘鸿海 [quote]刘鸿海: @blackcat 呵呵,是啊,这是产生该问题的第6个条件(如果……),所以要写出来,希望能对大家有所帮助,[/quote] 呵呵,很好,很好。 共享给比你晚知道的人。比我做的好。
zdd 2010-06-02 09:26
[quote]Arthas-Cui: 定义一个const的int值, 然后编译, 用dll方式引用。 由于编译到dll中的时候, 编译器会优化代码, 不会保存常量名, 而是直接保存值。 因此, 下一个人用的时候, 永远是那个值, 即使这面已经改过值了。 例如: 我写了一个FrameWork, 定义一个常量: public const int MaxValue = 100; 然后编译成dll了。 然后你在写程序的时候, 使用了我的framework。 并且引用了MaxValue这个值。 有一天我发现, 其实我支持的最大值是1000. 于是我升级了framework, 变成了: public const int MaxValue = 1000; 然后framework发过去。 由于程序集版本不升级, 你替换后直接使用了。 那么, 你程序中使用MaxValue的地方, 就依然保持100, 而不是1000.[/quote] 所以尽量使用readonly 而不是 const,除非你保证永远不变,比如圆周率之类的。readonly 的好处就是它是运行时常量,修改它时,不必重新编译目标程序。
阿水 2010-06-02 08:48
果然受教,谢谢楼主分享
hoodlum1980 2010-06-02 00:49
这个问题的解决办法就是定义枚举的时候显示定义它的值(不要用编译器自动分配的值)。当然,如果你的枚举有可以分组(或有序)等需求,定义值的时候需要保留一些“空隙”,以作为将来的插入空间。
牛肉干 2010-06-02 00:43
今天刚好看到Effective C#的Item 2, 说的就是这个问题。呵呵。
刘鸿海 2010-06-01 18:06
@blackcat 呵呵,是啊,这是产生该问题的第6个条件(如果……),所以要写出来,希望能对大家有所帮助,
blackcat 2010-06-01 17:46
这种问题。 在C中有类似的,诸如定义结构体,之后定义修改,如果使用传指针的方式,相关的库不更新,同样有问题。 C++中的类似。。。 其实是代码管理上的经验问题。
刘鸿海 2010-06-01 17:45
@Arthas-Cui 果然是这样的,谢谢你的补充,这个有点恶心了,有点失去定义常量的意义了。
Arthas-Cui 2010-06-01 17:34
定义一个const的int值, 然后编译, 用dll方式引用。 由于编译到dll中的时候, 编译器会优化代码, 不会保存常量名, 而是直接保存值。 因此, 下一个人用的时候, 永远是那个值, 即使这面已经改过值了。 例如: 我写了一个FrameWork, 定义一个常量: public const int MaxValue = 100; 然后编译成dll了。 然后你在写程序的时候, 使用了我的framework。 并且引用了MaxValue这个值。 有一天我发现, 其实我支持的最大值是1000. 于是我升级了framework, 变成了: public const int MaxValue = 1000; 然后framework发过去。 由于程序集版本不升级, 你替换后直接使用了。 那么, 你程序中使用MaxValue的地方, 就依然保持100, 而不是1000.
刘鸿海 2010-06-01 17:29
@Arthas-Cui 常量也是这样吗,可以详细说一下吗?
刘鸿海 2010-06-01 17:27
@Tony Zhou 因为每次改Bug和变更相对的变化都较小,可能用户怕所有的都提交过去动作比较大吧,怕万一有误操作就惨了,还是有一定的风险的。
Arthas-Cui 2010-06-01 16:44
不只是枚举, const也有相同的问题。
Tony Zhou 2010-06-01 14:56
[quote]刘鸿海: @阿水 是啊,我们组内是全部重新编译的,所以才不能再现这个问题,但是最终客户是要求只提交更改过的东西。[/quote] 很危险啊,数据乱了就不好,反正我们每次bin目录都打包
共3页: 1 2 3 下一页