如何避免看似自动引用“父”命名空间?

2023-11-23

我相信我对命名空间层次结构有一个根本性的误解,导致了与这个问题几乎相反的问题:vb.net 系统命名空间与同级命名空间冲突

我有两个 .cs 文件,其中包含以下内容:

File 1

namespace Parent.Math
{
    public class Foo { }
}

File 2

using System;
namespace Parent.Child
{
    public class Bar
    {
        public Bar()
        {
            Console.WriteLine(Math.Sqrt(4));           
        }
    }
}

File 2出现错误:CS0234 - The type or namespace name 'Sqrt' does not exist in the namespace 'Parent.Math'

为什么编译器会假设Math是对同级命名空间的引用,而不是显式引用的成员System命名空间?该行为就像自动引用父命名空间一样。它是否正确?我至少预计会出现歧义错误。

谢谢。


当您位于命名空间中时,编译器始终假定您也位于父命名空间中。

因此当在Parent.Child, 写作Math,编译器搜索Child接下来在Parent并发现Math作为名称空间但没有Sqrt类型,所以报错。

编译器会像这样进行搜索并沿着命名空间链向上查找。

如果没有命名空间,您将处于global.

你可以简单地写:

Console.WriteLine(System.Math.Sqrt(4));           

或者如果出现问题:

Console.WriteLine(global::System.Math.Sqrt(4));

你也可以写:

using SystemMath = System.Math;

Console.WriteLine(SystemMath.Sqrt(4));

从 C# 6 开始:

using static System.Math;

Console.WriteLine(Sqrt(4));

https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/using-directive

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何避免看似自动引用“父”命名空间? 的相关文章

  • 结构化绑定中缺少类型信息

    我刚刚了解了 C 中的结构化绑定 但有一件事我不喜欢 auto x y some func is that auto正在隐藏类型x and y 我得抬头看看some func的声明来了解类型x and y 或者 我可以写 T1 x T2 y
  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • C# 列表通用扩展方法与非通用扩展方法

    这是一个简单的问题 我希望 集合类中有通用和非通用方法 例如List
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 使用 WebApi 的 OData 分页 ( $inlinecount )

    我正在使用 OData 对从 Web api 调用返回的一长串项目进行分页 我可以通过带有开始和结束索引的 url 过滤数据 我的问题是 我如何知道项目的总数 因此 我可以在调用 Web API 的移动设备上显示第 1 页 共 3 页 20
  • 相机启动预览失败

    我正在创建一个相机应用程序 但我遇到了问题startPreview 它向我发送 java lang RuntimeException startPreview failed 这是我的相机Activity public class Camer
  • Azure Web应用程序无法访问Azure DB

    我有一个带有 SQL 数据库和 asp net 5 Web 应用程序的 Azure 试用帐户 数据库服务器防火墙对我的本地计算机 IP 有一条规则 并且还启用了 允许访问 Azure 服务 复选框 我可以毫无意外地从本地 Sql Serve
  • 透明背景视图中的高程

    我有一个具有自定义背景的项目列表 背景是一个简单的形状 带有填充白色的圆角矩形绘图 所以我的观点类似于卡片 我可以在它上面设置一个高度并且它可以工作 它的下面有一个影子 但我想优化它 我的窗口背景是白色的 所以我想我可以删除View的背景颜
  • Python,将数据框中的每日数据汇总为每月和每季度

    我已经将数据加载到 Pandas 数据框中 Example Date Price 2012 12 02 141 25 2012 12 05 132 64 2012 12 06 132 11 2012 12 21 141 64 2012 12
  • 如何在 SQLAlchemy 中实现关注/关注者关系

    以推特为例 我们有一个User类 我们想将用户定义为Follower and Followed 我们希望有一个这样的方法u followers 它返回关注该用户的用户列表u 相似地 u following应该返回用户列表 该用户u正在跟随
  • 有没有办法知道用户点击了验证链接?

    这是我用来发送验证电子邮件的代码 取自官方docs var user firebase auth currentUser user sendEmailVerification then function Email sent catch f
  • 如何获取窗口标题按钮的大小和位置(最小化、恢复、关闭)

    是否有 API 调用来确定窗口标题按钮的大小和位置 我正在尝试将 vista 风格的标题按钮绘制到所有者绘制的窗口上 我正在处理c c mfc 编辑 有人有绘制关闭按钮的代码示例吗 我找到了获取 vista 中按钮位置所需的函数 WM GE
  • 我如何从 QWidget 和 QThread 继承?

    我有一堂这样的课 class GUI public QWidget public QThread 当我执行上述操作时 我收到有关连接信号的错误 The error says Reference to connect is ambiguous
  • MSN 天气 API 条件列表?

    微软有一个与谷歌非常相似的天气API 谷歌现在似乎已经完全消失了 我已将我的一个应用程序转换为他们的源 但我无法找到所有可能的天气条件的列表 Google 天气 API 对此有很好的记录 但我找不到 MSN 天气 API 的条件列表 FWI
  • jQuery 验证器 - 动态添加验证时无法调用未定义错误的方法“call”

    这是我动态更新 jQuery 验证的代码 在文档加载中我创建验证 此代码用于动态更新电话号码验证 应用此验证后 当我在电话号码文本框中输入任何内容时 我收到无法调用未定义错误的方法 call phone rules remove phone
  • 获取运行 Java 应用程序时使用的所有类的列表?

    获取运行 Java 应用程序时使用的所有类的列表的最简单方法是什么 假使 假设com package Foo main通过运行调用 java com package Foo 运行程序后 我希望获得运行程序时使用的所有类的列表 cat cla
  • 使用 boto 列出自动伸缩组中的实例

    我想列出当前在自动扩展组中运行的所有实例 用boto可以实现吗 ASG 和实例之间一定存在某种关系 因为 boto 具有shutdown instances内的方法boto ec2 autoscale group AutoScalingGr
  • MAMP-Windows 上的 MySQL 服务器无法启动

    我在 Windows 10 上使用 MAMP 4 1 无法启动 MySQL 服务器 当我卸载 MAMP 并重新安装它时 MySQL 服务器会启动 但是当我停止它时 它不会启动备份 我还进入 mamp db mysql 并删除了下面 hili
  • 在 Java Web 应用程序中存储和访问资源文件的最佳实践

    我有一堆文本 xml 和其他文件 即资源 我需要在 java web 应用程序中使用 servlet 访问它们 例如 有一个xml文件 其中一部分是由用户查询用servlet返回的 我正在使用汤姆猫 存储这些文件并从 java 代码访问它们
  • UI 路由器:多个独立视图

    我觉得这是一个直接的用例ui router但也许我错过了一些东西 我希望有两个相邻的独立视图由各自的菜单控制 当我点击一个ui sref一个菜单上的链接 或 state go就此而言 我只想更新其中一个观点 此外 两种观点中只需要反映其中一
  • 在应用程序计费 v3 中使用 IabHelper 出现 IllegalArgumentException

    我已经在我的应用程序中实施应用程序计费 v3 大约一周了 我使用了很多android的示例代码来简化集成 我经常记录一次崩溃 但似乎无法重现 Exception Type java lang RuntimeException Reason
  • 如何在 JavaScript Azure Functions 中共享代码?

    如何在 Azure 函数应用中的文件之间共享代码 例如 Mongo 架构定义 我需要这样做 因为我的函数需要访问共享的 mongo 架构和模型 例如这个基本示例 var blogPostSchema new mongoose Schema
  • 如何使用 MongoDB 递归查询树结构?

    例如树结构为 id 1 childrenIdList 2 3 id 2 childrenIdList 4 5 id 3 childrenIdList id 4 childrenIdList 6 7 id 5 childrenIdList i
  • 如何避免看似自动引用“父”命名空间?

    我相信我对命名空间层次结构有一个根本性的误解 导致了与这个问题几乎相反的问题 vb net 系统命名空间与同级命名空间冲突 我有两个 cs 文件 其中包含以下内容 File 1 namespace Parent Math public cl