c#使用指令深度

本文关键字:深度 指令 | 更新日期: 2023-09-27 18:03:10

我试图理解c#使用指令…为什么这个工作…

using System;
using System.ComponentModel.DataAnnotations;
namespace BusinessRuleDemo
{
    class MyBusinessClass
    {
        [Required]
        public string SomeRequiredProperty { get; set; }
    }
}

但是这个没有?

using System;
using System.ComponentModel;
namespace BusinessRuleDemo
{
    class MyBusinessClass
    {
        [DataAnnotations.Required]
        public string SomeRequiredProperty { get; set; }
    }
}

第二个导致编译错误"无法找到类型或命名空间DataAnnotations "。您是否缺少using指令或程序集引用?

c#使用指令深度

using指令可以使用你指定的命名空间中的类名作为参数。由于DataAnnotations不是一个类,而是一个名称空间,因此在第二种情况下无法访问它。您应该使用完全限定类名NS1.NS2。Class1,或者使用NS1.NS2开始您的程序;然后使用Class1

因为你既可以使用完全限定类名,也可以只使用ClassName,让。net通过using指令解析它。没有中间地带。

Class1——

NameSpace1.NameSpace2.NameSpace3.Class1

可以通过

访问
using NameSpace1.NameSpace2.NameSpace3;
...
... Class1.DoSomething();
...

...
NameSpace1.NameSpace2.NameSpace3.Class1.DoSomething();
...

但不像

using NameSpace1.NameSpace2;
...
NameSpace3.Class1.DoSomething();
...

在最后一种情况下,编译器实际寻找的是根命名空间NameSpace3,这显然不存在。它不会尝试查找System.NameSpace3NameSpace1.NameSpace3NameSpace1.NameSpace2.NameSpace3等。