C# “名称空间”,但与“类型”一样使用

C# “名称空间”,但与“类型”一样使用,c#,class,namespaces,C#,Class,Namespaces,这是我的程序类使用它被称为Time2 我已将引用添加到TimeTest 我不断发现错误“Time2”是一个“名称空间”,但它的用法类似于“类型” 有人能告诉我这个错误是什么以及如何修复它吗 namespace TimeTest { class TimeTest { static void Main(string[] args) { Time2 t1 = new Time2(); } } } 我怀疑你至少有两次遇到同样的问题 在这里: 。。。您

这是我的程序类使用它被称为Time2 我已将引用添加到TimeTest 我不断发现错误“Time2”是一个“名称空间”,但它的用法类似于“类型”

有人能告诉我这个错误是什么以及如何修复它吗

namespace TimeTest
{
  class TimeTest
  {
    static void Main(string[] args)
    {
        Time2 t1 = new Time2();
    }
  }
}

我怀疑你至少有两次遇到同样的问题

在这里:

。。。您正在使用与其所在的命名空间相同的名称声明一个类型

很明显,你在Time2上也有同样的问题。我怀疑如果你加上:

using Time2;
在使用指令列表中,您的代码将被编译。但是请,请,请解决更大的问题:名字的选择有问题。点击上面的链接,了解为什么这是个坏主意的更多细节

另外,除非你真的对写基于时间的类型感兴趣,否则我建议你不要这么做。。。我要说的是,作为一个真正做到这一点的人。使用内置功能或第三方库,例如,um。正确处理日期和时间令人惊讶地棘手

namespace TestApplication // Remove .Controller
{
    public class HomeController : Controller
    {
       public ActionResult Index()
        {
            return View();
        }
    }
}
从名称空间中删除控制器字请检查您的类和名称空间名称是否相同

当名称空间和类名相同时会发生这种情况。 当您想要使用名称空间时,请做一件事,写下名称空间的全名

using Student.Models.Db;

namespace Student.Controllers
{
    public class HomeController : Controller
    {
        // GET: Home
        public ActionResult Index()
        {
            List<Student> student = null;
            return View();
        }
    }
如果错误是

第26行: 第27行:@foreach模型中的客户 第28行:{ 第29行:

给全名空格 喜欢
@模型中的foreach Start.Models.customer

如果您正在处理一个大型应用程序,并且无法更改任何名称,则可以键入a。要从命名空间中选择所需的类型,请执行以下操作:

namespace Company.Core.Context{
  public partial class Context : Database Context {
    ...
  }
}
...

using Company.Core.Context;
someFunction(){
 var c = new Context.Context();
}

我在名为Response的文件夹中创建了一个类Response.cs时遇到了这个问题,因此VS将新响应捕获为文件夹/名称空间

using Student.Models.Db;

namespace Student.Controllers
{
    public class HomeController : Controller
    {
        // GET: Home
        public ActionResult Index()
        {
            List<Student> student = null;
            return View();
        }
    }

因此,我将类名更改为StatusResponse.cs,并调用了new StatusResponse。这解决了问题。

所有答案都指出了原因,但有时更大的问题是识别定义不正确命名空间的所有位置。使用诸如Resharper之类的工具,可以使用文件夹结构自动调整命名空间,这是非常困难的呃容易遇到这个问题

通过使用以下正则表达式在project/solution中搜索,可以获得创建问题的所有行:

namespace .+\.TheNameUsedAsBothNamespaceAndType
类TimeTest与命名空间TimeTest冲突

如果无法更改命名空间和类名:

为类类型创建别名

using TimeTest_t = TimeTest.TimeTest;

TimeTest_t s = new TimeTest_t();

您有类型TimeTest.TimeTest和其他类似的类型。不要这样做。如果不将类型命名为与其命名空间相同的名称,则会产生歧义错误。有关更多信息,请参阅:您确实应该在此问题中添加一个精简的Time2声明,因为这可能是问题所在。很可能您在名为Time2The的命名空间中定义了Time2Ace,请下次尝试提供再现问题的最小示例。我已删除了不必要的行,请添加Time2定义以使其完整。标记为“非答案”,我在没有阅读问题时编辑了它。当您尝试从Microsoft.AspNetCore.Mvc命名空间中的控制器类继承时,如果您的文件夹被调用d控制器,而不是控制器,您的最终名称空间为控制器,由于名称空间的名称,它会引发错误。此答案是正确的,并帮助我发现我在项目中为文件夹控制器指定了错误的名称。这解决了我的问题。感谢您提供了非常清晰的答案!我更改了名称空间名称并修复了pr问题。这真的很奇怪,因为这是VS2019生成的默认代码。@TimMelton:如果您选择了名称空间名称TimeTest,然后选择了类名TimeTest,那么这将是默认代码。您必须同时选择这两个名称…我现在明白了问题所在。我正在观看的视频让我创建了一个名为Controller的文件夹,以放置e Controller文件。这是命名空间中的Controller的来源。VS自动将文件夹名称附加到命名空间中。在命名空间后删除单词Controller可以解决问题。这解决了问题!谢谢。有时Visual Studio会显示一些令人沮丧的误导性错误消息。在我的情况下,我设法拉了一个参考一个旧图书馆,它有一个重叠的名字问题,我以为我在几年前就用火杀死了它。