c# – 没有’使用someNamespace’的var关键字
发布时间:2020-12-15 23:55:15 所属栏目:百科 来源:网络整理
导读:即使您没有在顶部包含必要的using声明,Visual Studio / intellisense如何知道如何处理声明为var的变量? 例如,我在不同的命名空间中定义了MyDomainObject类 如果我没有声明使用TheOtherNameSpace;在文件中,以下代码将无法编译: private void Foo(){ MyDomai
即使您没有在顶部包含必要的using声明,Visual Studio / intellisense如何知道如何处理声明为var的变量?
例如,我在不同的命名空间中定义了MyDomainObject类 private void Foo() { MyDomainObject myObj = new MyDomainObject(); // Doesn't know what this class is } 但是如果我使用var var myObj = new MyDomainObject(); 这将编译,intellisense确切地知道我能用它做什么. 那么如何在没有使用的情况下知道它的类型是什么? (另外,如果它知道没有使用,为什么我们需要使用?!) 解决方法
使用构造函数的示例将不起作用,但稍微更复杂的情况将会起作用.例如,假设您有三种类型:
>命名空间N1中的类Foo 现在假设Bar有一个返回Foo实例的方法: public static Foo GetFoo() { ... } 这里,Bar.cs需要一个N1的using指令,除非它完整地指定了这个名字. 现在假设我们在Baz中有这个代码: using N2; ... var foo = Bar.GetFoo(); 那会编译,但是 using N2; ... Foo foo = Bar.GetFoo(); 惯于.原因是只使用指令,以便编译器知道名称“Foo”的含义 – 它的完全限定名称是什么.在第一个片段中,Bar.GetFoo()被有效地声明为返回N1.Foo,因此编译器没问题.在第二个片段中,编译器首先看到“Foo”并且对N1一无所知,因此不知道如何查找它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |