为什么完全限定的C#导入会失败?

4
在我的主方法中,我有一行代码 -
WebRequest reqObj = WebRequest.Create(CompleteDPath + FileName);

我添加了一个导入 - System.Net.WebRequest。这会引发一个错误:

类型或命名空间名称“YourProject”无法找到(是否缺少 using 指令或程序集引用?)。

当我将导入更改为System.Net时,错误就消失了。为什么会出现这种情况?
实际上,我正在使用SSIS的C#脚本任务中的此代码,即ETL工具。我提到这一点是因为如果你不能在纯Visual Studio中复制问题并想要声明SSIS作为问题来源。

11
因为你导入的是命名空间(namespaces),而不是类型(types)。 - Simon Whitehead
3
@SimonWhitehead 咚咚声 :) - Soner Gönül
@SonerGönül - 类型或命名空间名称“YourProject”无法找到(您是否缺少使用指令或程序集引用?所以,这并不像Java :( - Steam
1个回答

9

using 指令 (C# 参考)

using 指令有两个用途:

  • 允许使用 命名空间 中的类型,以便在该命名空间中不必用限定符限定类型的使用:

using System.Text;

  • 创建命名空间或类型别名。这称为 using 别名指令。

using Project = PC.MyCompany.Project;

你不能导入类型,只能导入整个命名空间,因此 using System.New.WebRequest 是无效的,你的代码也无法编译。

你可以创建一个别名来代替 WebRequest,以防止导入整个命名空间,但我个人不喜欢这种解决方案:

using WebRequest = System.Net.WebRequest;

是的,错误信息可以更具描述性,但这就是问题所在。


我试图像Java一样去做它... :( - Steam
4
C# 不是 Java。你不能假设所有的东西都一样工作。 - MarcinJuraszek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接