使用我的.Net 2.0代码库时,ReSharper不断推荐应用最新的c#3.0语言功能,最值得注意的是; 将简单属性转换为自动实现属性或将局部变量声明为var.在其他人中.
当一个新的语言功能到来时你会回过头来虔诚地将它应用到你现有的代码库中吗?或者你是否保留了最初编写的代码,接受如果使用新的语言功能编写新代码,代码中会出现不一致的情况?
如果没有损坏,请不要修理它.当然,如果你对你的单元测试有信心,你可以给它一个旋转,但你不应该真正随机改变代码"只是因为".
当然 - 在某些情况下,简化代码是进行更改的正当理由 - 但即使是切换到自动实现的属性这些无辜的东西也可能会破坏做出假设的代码并使用反射来直接更新字段.或者它可能会打破序列化.
更改为"var"实际上可以为您提供不同的(更具体的)类型,这可能会导致选择不同的方法重载等.
再说一次; 这取决于你对单元测试的信心.
其他考虑:
团队的其他成员是否了解新语法?
您的项目是否需要支持C#2.0(例如,某些开源项目可能希望保持与C#2.0的兼容性).
如果这些都不是问题,你应该确定使用新代码的新功能......只是一小打"更新所有"旧代码之前谨慎...
以下是"var"作为突破性变化的一个简单例子:
static void Main() { using (TextReader reader = File.OpenText("foo.bar")) { // [HERE] Write(reader); } } static void Write(TextReader reader) { Console.Write(reader.ReadToEnd()); } static void Write(StreamReader reader) { throw new NotImplementedException(); }
现在切换到var reader
标记的行[HERE]
...