繁体   English   中英

类可以使用基类中名称空间的属性吗

[英]class can i use the properties of the name space from base class

有一个简单的问题,看起来很简单,但我一直在搜索无法找回的原因。

  1. 如果我在基类中导入了名称空间,那么我可以在所有派生类中使用名称空间的属性(类,对象,方法等)吗?

例如

using System.Collections.Generic;
public class MyBase
{
     public string GetName()
        {
            List<string> ss = new List<string>();
            return ss.ToString();
        }
}

我可以在没有基础名称空间的情况下,在从基础分类的所有子级中使用List属性吗? 喜欢

public class myChild : MyBase
    {
        public string GetName()
        {
            List<string> ss = new List<string>();
            return ss.ToString();
        }
    }

如果没有,为什么? 我在局部类中也注意到了同样的行为..有人可以解释其背后的原因吗?

听起来您在问以下问题

如果在导入名称空间的文件中定义了“父类型”,那么如果我从“父”派生,是否必须重新导入该名称空间?

如果是这样,答案是肯定的。 子类型不继承在定义了父类型的文件中导入的名称空间(部分原因是,对于partial类型,可以在名称空间冲突的多个文件中定义类型)。 每个文件都是根据自己的导入集进行编译的。

using语句不是可执行代码,并且不适用于类或类的成员。 相反,它们为编译器提供了有关如何解析类型名称的信息。 using语句仅在包含它的文件的范围内; 此外,如果它在名称空间声明中,则仅在该名称空间声明中有效。

请注意,一个文件中可能有多个命名空间声明,因此:

namespace N
{
    using System.IO;
    partial class C
    {
        public FileInfo SomeFileInfo { get; set; }
    }
}

namespace N
{
    partial class C
    {
        public DirectoryInfo SomeDirectoryInfo { get; set; }
    }
}

由于using System.IO; ,因此无法解析对DirectoryInfo的引用using System.IO; 当时不在范围内。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM