gpt4 book ai didi

c# - 查询 C# 命名空间和使用

转载 作者:太空宇宙 更新时间:2023-11-03 13:10:01 25 4
gpt4 key购买 nike

C# 新手关于使用 & 命名空间的问题:

using System;
using System.Data;

namespace Granite2 {
class Class1 {
System.Data.SqlClient.SqlConnection Conn1;
SqlClient.SqlConnection Conn2;
}
}

毫无疑问,Conn1 行可以正常编译。 Conn2 出现错误“找不到类型或命名空间‘SqlClient’”。

这是为什么?我认为在其中“使用 System.Data”意味着我可以在没有完整限定符的情况下引用 SqlClient。

我很困惑,因为我正在将 VB.NET 转换为 C#,并且命名空间在 VB.NET 中有效。显然我在这里没有意识到一些细微差别。

最佳答案

那是因为 C# 编译器只导入您指定的命名空间中的类型(对于您的特定情况 System.Data),而不是从它的所有子命名空间(所以在您的情况下 System .Data.SqlClient 命名空间类型未导入)。

FAQ 开始C# 团队 - 这样做的主要原因是防止 namespace 名称之间的冲突。

想象一下——您的命名空间 X 可以有子命名空间 YZ 都声明了 SomeClass。因此,如果您将 using X 然后 SomeClass с = new SomeClass(); - 如果编译器将从 X 的所有子 namespace 导入所有类型,将会发生冲突

关于c# - 查询 C# 命名空间和使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29346448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com