在C#界面中使用关键字“使用”


16

当我使用C#编写一些代码并使用Visual Studio 2010定义接口时,它总是包含许多“使用”语句(如示例中所示)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TestEngine.TestNameSpace
{
    interface ITest1
    {
        bool testMethod(int xyz);
    }
} 

我想知道这些是做什么用的,以及它们是否真的必要。我可以省掉这些吗?仅当我在界面说明中使用这些部件时才需要它们吗?


thnx进行编辑。我自己弄清楚了。即使我在代码块中选择了使用语句,也以某种方式忽略了使用语句:)
Onno,2012年

2
另请阅读stackoverflow.com/a/151560/240613:在您的代码中,使用位置错误。
阿森尼·穆尔坚科

1
Thnx的链接,这是一个很好的补充。在@Akshat Jiwan Sharma回答后,很明显确实是这种情况,但是与此同时,问题与安装VS2010时MS提供的默认模板/设置有关。
2012年

1
@MainMa-这是Visual Studio将usings默认模板放在其中的位置,因此,除非Microsoft很快更新了这些模板,否则此问题有效。
克里斯·

1
@Midhat:是的,但是我认为当人们读到问题本身时,正在问什么是显而易见的。如果可以想到更好的标题,请随时进行编辑。
2012年

Answers:


49

Visual Studio不知道您打算编写什么代码,因此默认情况下在“新类”模板中包含最常用的命名空间。这样做是为了您不必为编写的新代码的每一行都解析所有引用。

编写基本代码后,如果右键单击并选择组织使用者>删除和排序,它将删除所有未使用的代码。


2
另外,如果确实删除了“使用”行,则可以通过转到现在找不到的类名将其重新添加,然后右键单击->解决->使用...
Lister

10
@MrLister:如果您还不知道,请按“ ctrl +”。(控制周期),当光标位于任何未解决的类型或类上并且您无需触摸鼠标即可获得相同的效果。
史蒂文·埃弗斯

3
同样,作为答案的补充:未使用的“用法”不会影响代码的运行时,因为只会加载已使用的“用法”。他们可以然而影响IDE和编译速度:stackoverflow.com/questions/136278/...
霍尔格

由于这是公认的答案,因此我想提一下,StyleCop会抱怨引用在错误的位置,并且还可以编辑新类和新界面等的模板
Job

5

是的,您可以删除任何未使用的using指令。这些指令是Visual Studio自动添加的,因为它们是最常用的指令,例如,如果您不打算在界面中使用linq,则可以删除该指令

 System.Linq;

其他指令也是如此。在我看来,将using指令移到名称空间中也是一种好习惯。


很长时间以来,很高兴为您提出的问题感到困惑。:)
Akshat Jiwan Sharma 2012年

可以编辑一个模板文件,并调整要包含的using语句及其位置-默认情况下,它们应放在名称空间中,否则StyleCop会抱怨,甚至更糟-可能发生不良情况。
2012年

3

这些默认using语句是创建接口时默认模板的一部分。您始终可以编辑模板以将其删除。有关更多详细信息,请参见此问题。


但是,它们真的必要吗?是否有充分的理由让它们出现在模板中?
Onno 2012年

如果您不需要它们,只需将其删除。它们只是默认值。
伯纳德

仅当您的接口方法之一是位于其中一个接口中的返回类型时,才需要使用它们。您至少需要System,而其他仅在需要返回类型时才需要。
Graham

实际上,许多类不需要系统。但总而言之,这使大多数开发人员的工作变得更加轻松,尤其是那些对.NET不习惯的人以及不知道从哪里挑选主要系统类的开发人员。
Wyatt Barnett 2012年

0

简而言之,它们称为名称空间。命名空间还用于引用代码中的某些库类。还有关于如何在.NET中使用名称空间的建议准则

在大多数情况下,如果不使用它们,可以简单地将其删除。以下两个名称空间是要删除的潜在候选对象。

using System.Collections.Generic;
using System.Linq;

一旦使用了某些框架/库类而不声明其名称空间,Visual Studio将抱怨并且不编译代码。因此,命名空间发挥了作用,它可以构造代码并简化项目类,接口,构造等之间的引用。


-1

在C#中使用的方式有很多。作为单词关键字使用,是指使用system时在开始使用。这意味着有一个名称为System的DLL,其中存储了所有主要功能,我们用它来缩短我们的代码...

system.WriteLine("Andy");

但是当我们使用上面的系统时,我们可以写成

WriteLine("Andy");

当使用连接时,SQLserver中的更多内容意味着使用命令连接从数据库中使用数据后,它本身将关闭。对于想节省时间的编码员来说非常有用


1
请不要尝试在答案中添加不必要的链接(并且可能会发送垃圾邮件)。
克里斯·
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.