明月笑刀无情
我认为它没有明确回答这个问题。为什么不?var getFoo() { return new Foo(); }原因是:如果?class Foo {}var GetFoo() { return GetBar(); }var GetBar() { return GetBaz(); }var GetBaz() { return new Foo();}您可以推断出GetFoo将要返回的内容Foo,但是您将不得不跟踪该方法及其子对象进行的所有调用,以推断类型。就目前而言,C#编译器并非旨在以这种方式工作。在推断类型的代码可以运行之前,它在过程的早期需要方法和字段类型。在纯粹的美学层面上,我发现方法的var定义使事情变得混乱。我认为明确表示总是有帮助的,它会意外返回导致签名和其他相关方法签名发生变化的类型,从而保护您免受脚伤。更糟糕的是,如果您返回一个返回对象的方法的值并且碰巧很幸运,那么您甚至有可能不知道自己就改变了方法链的所有签名。我认为var方法最适合像Ruby这样的动态语言