我已经开始学习C#/.NET/VisualStudio(2022年)出现了这个奇怪的问题;系统及其嵌套名称空间中的所有方法/类似乎都可以在without个完整路径或开始使用指令时使用.

下面的例子编译得很好:

// Program.cs
namespace MyApp
{
    internal class Program
    {
        static void Main()
        {
            Console.WriteLine("Hello World!"); //System.Console
        }

        static HttpClient client = new HttpClient(); //System.Net.Http.HttpClient
    }
}

为什么会发生这种情况,我能以某种方式禁用这种行为吗?

推荐答案

如果你正在使用.NET 6中,这很可能来自一个名为"隐式使用"的新功能.根据项目类型,会自动包含某些名称空间.例如,默认控制台应用程序模板隐式包括以下名称空间:

  • 系统
  • 系统木卫一;
  • 系统Collection .通用的
  • 系统林克;
  • 系统网Http;
  • 系统穿线;
  • 系统穿线.任务;

通过在项目文件中包含以下内容,可以禁用此功能:

<PropertyGroup>
   <ImplicitUsings>disable</ImplicitUsings>
</PropertyGroup>

关于此功能和"全球使用"in this Microsoft documentation.还有更多文档

.net相关问答推荐

为什么.Net 8.0.100是预览版?

FileHelpers 未使用正确的日期格式

无法解析此引用.找不到程序集

我在哪里可以获得线程安全的 CollectionView?

什么是表达式树,如何使用它们,为什么要使用它们?

.NET - WindowStyle = hidden 与 CreateNoWindow = true?

Unity 2.0:如何使用 Resolve 和 ResolverOverride?

如何获取 Sql Server 数据库中所有模式的列表

.NET 的 `Array.Sort()` 方法使用的排序算法是稳定的算法吗?

生产代码中的 System.Diagnostics.Debug.WriteLine

我可以从 .NET/C# 获取其他进程的命令行参数吗?

何时在 C#/.NET 中使用指针?

如何允许程序集(单元测试)访问另一个程序集的内部属性?

在生产环境中部署调试符号(pdb 文件)有什么风险?

从流中获取 TextReader?

在 .NET 中,null 的哈希码是否应该始终为零

MVC4 HTTP 错误 403.14 - 禁止

如何将 VB 项目转换为 C# 项目

在 WPF 中设置 Tab 键顺序

在类型 c# 上切换大小写