我的同事坚持在代码中明确指定命名空间而不是使用using指令.换句话说,每次在代码中出现此类型时,他都希望为每种类型使用完全限定名称.就像是
public class MyClass
{
    public static void Main()
    {
        System.Console.WriteLine("Foo");
    }
}
代替:
using System;
public class MyClass
{
    public static void Main()
    {
        Console.WriteLine("Foo");
    }
}
你可以想象后果.
他给的职业选手:
我的缺点:
你怎么看待这件事?
Mar*_*ell 48
对于稍微不同的答案:LINQ.
扩展方法只能通过"using"语句获得.因此,查询语法或Fluent接口只能使用正确的"using"语句.
即使没有LINQ,我也会说使用"使用"......推断你能用更少的字符理解的越多越好.某些名称空间非常深,但不会为您的代码添加任何值.
还有其他扩展方法(不仅仅是LINQ)会受到同样的影响; 当然,你可以使用静态类,但流畅的界面更具表现力.
Rob*_*ney 37
我怎么看待这个?
我想,谁都会拿出这样的想法,谁就会证明它自己有办法的人,很可能有一些关于C#语言和.NET开发其他基本误解.
Kib*_*bee 19
我发现不使用"using"指令的最大问题不在于实例化和类的定义.它是将值传递给在命名空间中定义的函数.比较这两段代码(VB.Net,因为这就是我所知道的,但是你得到了图片).
Module Module1
    Sub Main()
        Dim Rgx As New System.Text.RegularExpressions.Regex("Pattern", _
            System.Text.RegularExpressions.RegexOptions.IgnoreCase _
            Or System.Text.RegularExpressions.RegexOptions.Singleline _
            Or System.Text.RegularExpressions.RegexOptions.IgnorePatternWhitespace)
        For Each result As System.Text.RegularExpressions.Match In Rgx.Matches("Find pattern here.")
            'Do Something
        Next
    End Sub
End Module
还有这个
Imports System.Text.RegularExpressions
Module Module1
    Sub Main()
        Dim Rgx As New Regex("Pattern", _
            RegexOptions.IgnoreCase _
            Or RegexOptions.Singleline _
            Or RegexOptions.IgnorePatternWhitespace)
        For Each result As Match In Rgx.Matches("Find pattern here.")
            'Do Something
        Next
    End Sub
End Module
在这种情况下,使用大量枚举,以及在for循环中内联声明变量,减少范围,在vb.Net的情况下不使用"使用"或"导入",可能导致可读性非常差.
因为我们在C#中有一个工具用于自动设置using语句,按Ctrl + dot - 我看不出有任何理由不使用它.另一个"酷"的事情是:
想想你有两个命名空间:
ConsoleNamespace1
和
ConsoleNamespace2
两者都有一个Console类.现在,您可以使用一行代码更改对ConsoleNamespace2的所有引用 - 这很酷.
我的建议:using如果可以,请使用,如果必须,请使用.我不认为完全一个,如果更容易阅读.了解你的框架,这永远不会成为问题.