我已经开始学习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相关问答推荐

在本地运行 Azure 函数会在 .NET7 升级后出现无运行时错误

在 WP7 中将 List 转换为 ObservableCollection

为什么具有可为空值的 struct 的 HashSet 非常慢?

.NET 的 Visual Studio 调试器提示和技巧

如何判断 IOException 是否为 Not-Enough-Disk-Space-Exception 类型?

JavaScript 中的IsNullOrWhitespace?

app.config 文件和 XYZ.settings 文件有什么区别?

为什么 LINQ .Where(predicate).First() 比 .First(predicate) 快?

.NET - 实现捕获所有异常处理程序的最佳方法是什么

属性应该与其类型同名吗?

HashSet 是否保留插入顺序?

如何使我的托管 NuGet 包支持 C++/CLI 项目?

仅使用 XAML 绘制纯色三角形

如何访问 Session 变量并在 javascript 中设置它们?

MailMessage,Sender 和 From 属性的区别

对构造函数进行单元测试重要吗?

.NET Remoting 真的被弃用了吗?

检测到包降级警告(dotnet core,vs 2017)

枚举和匹配属性的 C# 命名约定

泛型类的静态成员是否与特定实例相关联?