如果没有定义命名空间,一个类会有啥命名空间

     2023-02-23     59

关键词:

【中文标题】如果没有定义命名空间,一个类会有啥命名空间【英文标题】:What namespace will a class have if no namespace is defined如果没有定义命名空间,一个类会有什么命名空间 【发布时间】:2014-10-18 22:25:50 【问题描述】:

在 C# 中,如果我创建一个没有命名空间的类,我将在尝试实例化该类时使用什么命名空间?

例如,假设 main 是...

namespace NamespaceTests

    class Program
    
        static void Main(string[] args)
        

        
    

...并假设我的无命名空间类是...

public class test

    public string SayHello()
    
        return "Hello World!";
    

...并假设我有另一个同名的类,但具有默认命名空间...

namespace NamespaceTests

    public class test
    
        public string SayHello()
        
            return "Hello Moon...";
        
    

...我将如何修改 main 以包含无命名空间类的实例并调用“SayHello”来检索消息“Hello World!”?具体来说,我将如何完全限定类“test”的无命名空间实例,特别是考虑到我可能有另一个类也称为“test”但有一个命名空间,所以我需要区分......

【问题讨论】:

explicitly refer to a class without a namespace in C#的可能重复 【参考方案1】:

它在global namespace 中,可以这样引用:

var x = new global::test();

【讨论】:

感谢大卫 - 示例完美。您的回答是在@itsme86 前 10 秒 - 先生,奖励给您。例如 +1... 这解决了由于同名类而导致的模棱两可的引用。一个有命名空间,一个没有。它试图用命名空间调用一个并得到一个异常:错误 CS0117:'System.Web.Mvc.HtmlHelperExtensions'不包含'RenderPartialViewToString的定义【参考方案2】:

未在命名空间中定义的类型将位于 global 命名空间中。

全局上下文关键字,当它出现在 :: 运算符之前时,指的是全局命名空间,它是任何 C# 程序的默认命名空间,否则未命名。

以下示例显示了如何使用全局上下文关键字 指定类 TestApp 定义在全局命名空间中:

C# class TestClass : global::TestApp  

【讨论】:

【参考方案3】:

除了上面的答案之外,需要注意的是,所有类型,无论其声明位置如何,都有一个“完全限定名称”,它从“global::”开始

来自“O'Relly. C# in a Nutshell”:

所有类型名称都在编译时转换为完全限定名称。中间语言 (IL) 代码不包含非限定名称或部分限定名称

【讨论】:

确实可以在 C# 中使用完全限定的对象进行编程并避免使用using 语句。 using 语句是纯粹的语法糖,它压缩代码以使其更易于阅读。当对具有相似名称的类存在很大程度的混淆时,完全限定类型并且不使用 using 语句以提高清晰度可能是有意义的。

如果命名空间也被定义为默认值,则强制 XDocument 不使用命名空间前缀

】如果命名空间也被定义为默认值,则强制XDocument不使用命名空间前缀【英文标题】:ForceXDocumenttonotusenamespaceprefixifnamespaceisalsodefinedasdefault【发布时间】:2015-12-1410:45:08【问题描述】:我有一个带有和不带命名空间前缀的默认... 查看详情

命名空间简记

...也是)2、命名空间的查找顺序:局部->全局->内置。如果找不到所要查询的变量,就会放弃查找,并引发一个NameError异常: NameError:name‘变量名‘isnotdefined。3、命名空间的生命周期:命名空间的生命周期取决于对象的作用域... 查看详情

在命名空间块中定义类方法和使用 :: 定义它们有啥区别

】在命名空间块中定义类方法和使用::定义它们有啥区别【英文标题】:What\'sthedifferencebetweendefiningclassmethodsinanamespaceblockanddefiningthemusing::在命名空间块中定义类方法和使用::定义它们有什么区别【发布时间】:2014-05-2901:23:16【问... 查看详情

DOMDocument 命名空间有啥用?

...org/rss/1.0/modules/slash/\');据我了解,它们的作用类似于文档定义,并且需要识别某些 查看详情

xml名命空间(代码片段)

...属性使用了对应的命名空间后,那它就属于该命名空间;如果元素没有使用命名空间,那就属于默认命名空间,如果属性没有使用命名空间,那就属于所在 查看详情

python中的命名空间是啥?

...目中避免名字冲突的一种方法,各个命名空间是独立的,没有任何关系的,所以一个命名空间中不能有重名,但不同的命名空间是可以重名而没有任何影响。Python命名空间分类Python程序执行期间会有两个或者三个活动的命名空间... 查看详情

如何从另一个命名空间而不是全局命名空间定义函数和数据?

...intheglobalone?【发布时间】:2014-11-3013:26:36【问题描述】:如果我有一个带有一些声明的标题:“头文件.hpp”externintSomeData;intSomeFunc();以及它的一个实现(我在一个未命名的命名空间中声明了所有函数和 查看详情

如何在另一个 C++ 命名空间内的全局命名空间中定义朋友?

...类,操作员应该得到访问该类的私有成员。我的问题是我没有知道如何在类定义中使全局运算符成为朋友时对其进行作用 查看详情

c++之命名空间(namespace)(代码片段)

...大量的变量、函数、类,在我们不加以规定时,如果有两个变量需要使用相同的变量名,编译器将因为无法识别而报错,而命名空间就是为了解决这个问题,使用命名空间将它们本地化。简单点来说,就是... 查看详情

类、包、命名空间和模块之间有啥区别?

...:我正在尝试确定最合适/通用的术语是什么,用于引用定义可重用对象的文件或文件组。我最常听到的术语是类、包、命名空间、模块、单元和组件,但我不确定它们之间的 查看详情

c++问题:关于匿名命名空间

...个学校找小明这个人.那么这个叫小明的人可能有好几个,如果你可以确定小明在3班,那么就可以排除掉别的班的小明了.命名空间也就是班级.小明也就是你的变量或函数.现在明白了吧?使用命名空间里的东西,要使用双冒号::你也可... 查看详情

XSD:命名空间和默认命名空间有啥区别

】XSD:命名空间和默认命名空间有啥区别【英文标题】:XSD:whatisthedifferencebetweenthenamespaceandthedefaultnamespaceXSD:命名空间和默认命名空间有什么区别【发布时间】:2014-08-1010:03:58【问题描述】:也许问题的标题具有误导性,那是... 查看详情

在多个 DLL 中拥有命名空间有啥影响?

】在多个DLL中拥有命名空间有啥影响?【英文标题】:WhatistheimpactofhavingnamespacesinmultipleDLLs?在多个DLL中拥有命名空间有什么影响?【发布时间】:2010-09-1400:13:57【问题描述】:我继承了一个生成2个DLLS的VB.net项目:一个用于Web应... 查看详情

函数的进阶(代码片段)

...范围的不能用小范围的范围从大到小(图)在小范围内,如果要用一个变量,是当前这个小范围有的,就用自己的如果在小范围内没有,就用上一级的,上一级没有就用上上一级的,以此类推。如果都没有,报错函数的嵌套: ... 查看详情

std::literals::.. 作为内联命名空间有啥好处?

...述】:在C++标准(例如N4594)中,operator""s有两个定义:std::chrono::secon 查看详情

命名空间

...空间的影响,它们是:类,函数和常量。关键字 namespace如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间。特征 另外,与PHP其它的语言特征不同,同一个命名空间可以定义在多个文件中,即允许将同一个... 查看详情

django(命名空间)(代码片段)

...冲突,因为已有的定义都处于其它命名空间中。由于name没有作用域,Django在反解URL时,会在项目全局顺序搜索,当查找到第一个name指定URL时,立即返回我们在开发项目 查看详情

命名空间有啥意义? [复制]

】命名空间有啥意义?[复制]【英文标题】:WhatisthepointinNameSpaces?[duplicate]命名空间有什么意义?[复制]【发布时间】:2012-12-2714:26:13【问题描述】:可能重复:Whatarenamespaces?据我了解,命名空间允许您在脚本的不同命名空间内拥... 查看详情