Uso da palavra-chave "Using" na interface C #


16

Quando estou usando C # para escrever algum código e defino uma interface usando o Visual Studio 2010, ele sempre inclui várias instruções "using" (como mostrado no exemplo)

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

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

Eu me pergunto para que servem e se são realmente necessários. Posso deixar isso de fora? Eles são necessários apenas quando estou usando essas partes na descrição da minha interface?


thnx para a edição. Eu mesmo descobri. de alguma forma, as declarações usando ficaram de fora mesmo que eu tinha selecionado-los no bloco de código :)
Onno

2
Leia também stackoverflow.com/a/151560/240613 : no seu código, os usos estão no lugar errado.
Arseni Mourzenko 16/10/12

1
Thnx para o link, é uma ótima adição. Após a resposta de @Akshat Jiwan Sharma, ficou claro que esse é realmente o caso, mas ao mesmo tempo a pergunta se refere ao modelo / configurações padrão, conforme fornecido pela MS quando você instala o VS2010.
Onno

1
@MainMa - é aqui que o Visual Studio coloca os usingsmodelos padrão, portanto, a menos que a Microsoft os atualize em breve, essa pergunta é válida.
ChrisF

1
@ Midid: Verdade, mas acho que é evidente o que está sendo perguntado quando se lê a pergunta em si. Sinta-se livre para editar o título, se você puder pensar em um melhor.
Onno

Respostas:


49

O Visual Studio não sabe qual código você pretende escrever, portanto, inclui os namespaces mais comuns por padrão no modelo "nova classe". Isso é feito para que você não precise resolver todas as referências para cada linha do novo código que você escreve.

Depois de escrever seu código básico, se você clicar com o botão direito do mouse e selecionar Organizar Usos> Remover e Classificar, ele excluirá os que não forem utilizados.


2
Além disso, se você remover uma linha "using" por engano, poderá adicioná-la novamente, acessando o nome da classe que agora não pode ser encontrado e clicar com o botão direito do mouse -> Resolver -> Using ...
Mr Lister

10
@ MrLister: Se você ainda não sabia disso, pressione "ctrl +". (período de controle) quando o cursor está em qualquer tipo ou classe não resolvida e você obtém o mesmo efeito sem precisar tocar no mouse.
Steven Evers

3
Também como uma adição à resposta: "usos" não utilizados não afetarão o tempo de execução do seu código, pois apenas os "usos" usados ​​serão carregados. Podem, contudo, afetar as velocidades de IDE e compilar: stackoverflow.com/questions/136278/...
Holger

Uma vez que esta é a resposta aceita, eu queria mencionar que StyleCop vai reclamar sobre referências estar no lugar errado e também pode editar um modelo para uma nova classe e uma nova interface, etc.

5

Sim, você pode remover qualquer diretiva using que não esteja sendo usada. Essas diretivas são adicionadas automaticamente pelo visual studio, pois são as mais usadas e, por exemplo, se você não usar o linq na interface, poderá remover a diretiva

 System.Linq;

O mesmo vale para outras diretivas também. Também é uma boa prática, na minha opinião, mover as diretivas de uso dentro de namespaces.


Feliz em ajudar a pergunta que você fez me intrigou por um longo tempo também. :)
Akshat Jiwan Sharma

Pode-se editar um arquivo de modelo e ajustar qual instrução de uso é incluída e onde - eles devem ir para dentro do espaço para nome por padrão ou então o StyleCop irá reclamar e, pior ainda - coisas ruins podem acontecer.
Job

3

Essas usinginstruções padrão fazem parte do seu modelo padrão ao criar interfaces. Você sempre pode editar o modelo para removê-lo. Veja esta pergunta para mais detalhes.


Mas eles são realmente necessários? Existe uma boa razão para eles estarem no modelo?
Onno

Se você não precisar deles, basta removê-los. Eles são apenas padrões.
Bernard

Eles são necessários apenas se um dos seus métodos de interface for um tipo de retorno localizado em um deles. Você precisa do System no mínimo e dos outros apenas conforme necessário para os tipos que deseja retornar.
Graham

Na verdade, muitas classes não precisam de sistema. Mas, no geral, isso facilita a vida da maioria dos desenvolvedores, especialmente aqueles que não estão muito acostumados ao .NET e não sabem onde escolher as principais classes de sistema.
Wyatt Barnett

0

Em suma , eles são chamados de namespaces . Os espaços para nome também são usados ​​para referenciar algumas classes de biblioteca dentro do seu código. Também há diretrizes recomendadas sobre como usar namespaces no .NET

Na maioria dos casos, você pode simplesmente removê-los se não for usado. Os dois espaços para nome a seguir são possíveis candidatos a serem removidos.

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

O Visual Studio irá reclamar e NÃO compilar o código, uma vez que algumas classes de estrutura / biblioteca tenham sido usadas sem declarar seus espaços para nome. Assim, o namespace desempenha um papel na estruturação do seu código, além de facilitar as referências entre as classes do projeto, interfaces, construções etc.


-1

usando em C # usado de várias maneiras .. como palavra-chave word usando meios usando .. on start quando usamos o system; isso significa que existe uma DLL de nome Sistema na qual todas as funções principais são armazenadas e nós a usamos para abreviar nosso código ...

system.WriteLine("Andy");

mas quando usamos o sistema acima, podemos escrevê-lo como

WriteLine("Andy");

mais no SQLserver, quando usamos a conexão, significa que, depois de usarmos os dados do banco de dados usando o comando connection, ele será fechado. é muito útil para um codificador que quer economizar seu tempo


1
Por favor, não tente adicionar links desnecessários (e potencialmente spam) às suas respostas.
ChrisF
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.