是否存在从不同命名空间引用类型的一般规则。你一直使用:
using System.Drawing;
而不是在需要时定义它:
System.Drawing.Graphics gr;
当我只“调用”一次时,我倾向于键入完整的命名空间。有没有最好的做法?
答案 0 :(得分:9)
我使用的是(以及我相信大多数开发人员使用的),总是说
using System.Drawing;
并保留
System.Drawing.Graphics gr;
仅针对存在冲突的地方,在不同的命名空间中定义了两个Graphics
,即便如此,我仍然宁愿使用using
来区分它们:
using MyGraphics=My.Own.Conflicting.Named.Graphics;
// :
var myGraph = new MyGraphics();
答案 1 :(得分:3)
代码中的完全限定名称会分散注意力并产生噪音。我宁愿永远不要拥有它们。如果存在名称空间冲突,则使用别名可以解决该问题。
此外,让我们面对现实,99.99%的C#开发人员正在使用Visual Studio,因此了解类型来自哪个命名空间和/或程序集与F12一样快或只是将鼠标悬停一秒钟。
我唯一喜欢代码中完全限定名称的代码是代码示例,就像在Stack Overflow中一样,以清楚地说明正在使用的类型。
答案 2 :(得分:2)
调用一次可以转变为更进一步,称之为10次,20次或n次。我的经验法则是C#设计团队出于某种原因将“使用”放入语言中,所以如果你原谅双关语,请使用它。
例如,如果我正在编写以下代码:
private System.Drawing.Drawing2D.HatchBrush GetHatchBrush()
{
System.Drawing.Color c = System.Drawing.Color.Red;
System.Drawing.Drawing2D.HatchBrush h = new System.Drawing.Drawing2D.HatchBrush(System.Drawing.Drawing2D.HatchStyle.BackwardDiagonal, c);
return h;
}
仅使用Color
和HatchBrush
一次,我当然更愿意阅读:
private HatchBrush GetHatchBrush()
{
Color c = Color.Red;
HatchBrush h = new HatchBrush(HatchStyle.BackwardDiagonal, c);
return h;
}
就个人而言,更好的是:
private System.Drawing.Drawing2D.HatchBrush GetHatchBrush()
{
var c = Color.Red;
var h = new HatchBrush(HatchStyle.BackwardDiagonal, c);
return h;
}
正如James Curran所说,我唯一一次用完整的命名空间来完全限定一个类,而不是使用using
,那么将一个名字带入范围会引起歧义。
答案 3 :(得分:2)
对于使用两个不同命名空间引入命名冲突的条件,我只避免using
语句。
答案 4 :(得分:1)
这里没有普遍接受的最佳做法 只需使用常识。这里唯一的目标是可读性。
如果在代码中仅使用一次或两次相对罕见的类,请使用全名。
对于大多数名称空间,特别是经常使用的名称空间,请将它们放在顶部的using指令中。
还有一些非常(非常)罕见的案例,您需要使用它来创建别名,但这与此问题没有实际关系。
答案 5 :(得分:1)
我倾向于输入完整的命名空间 我只是“召唤”它一次。在那儿 关于那个的最佳实践?
一般来说,即使只调用一次,我也会看到“使用”,这似乎是标准(也是Resharper会推动你走向的,很多人倾向于喜欢他们的默认约定)
答案 6 :(得分:0)
如果您认为应该回答这个问题的模块对您来说好一点。
如果您滥用名称空间使用,则会出现名称冲突的问题。
如果您有一个专用于图形的模块,并且该模块仅通过其接口使用,那么您甚至不会在该模块之外访问它。在这种情况下,你将在模块中使用Using(可以这么说!),因此理解它是一件好事,让我们说出你的手指吧!