有一个简单的问题,看起来很简单,但我一直在寻找无法取回它的原因。
例如
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();
}
}
如果不是为什么?我在部分类中也注意到了相同的行为..有人可以解释其背后的原因吗?
答案 0 :(得分:3)
听起来你问的是以下
如果在导入命名空间的文件中定义了父类型,如果从父类派生,是否必须重新导入该命名空间?
如果是这样,答案是肯定的。子类型不会继承在定义父类型的文件中导入的名称空间(部分原因是使用partial
类型,可以在具有冲突名称空间的多个文件中定义类型)。每个文件都是根据它自己的导入集编译的。
答案 1 :(得分:2)
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; }
}
}
无法解析对DirectoryInfo
的引用,因为此时using System.IO;
不在范围内。