2012-02-24 18 views
7

Vengo de un entorno VB.Net, donde funciona Imports System y luego IO.Directory.GetFiles(...).¿Por qué no puedo escribir IO.Directory.GetFiles?

Por otro lado, parece que using System; no es suficiente para escribir use IO.Directory sin ponerle el prefijo System.. La única solución parece ser using IO = System.IO;

¿Por qué?


código Ejemplo:

using System; 
using System.IO; 

namespace Test { 
    class Program { 
     static void Main(string[] args) { 
      System.Console.WriteLine(IO.Directory.GetFiles(System.Environment.CurrentDirectory)[0]); 
     } 
    } 
} 

Editar: Mi pregunta no es lo que hay que hacer para obtener mi código de trabajo, sino específicamente "¿por qué no puede escribo IO.Directory.GetFiles ??"

+0

Solo tenga en cuenta que siempre obtiene una pequeña indicación de los espacios de nombres no agregados en la parte inferior derecha del nombre de la clase cuando escribe el nombre de clase exacto. Puede expandirlo colocando el mouse sobre la indicación roja y haciendo lo necesario. – nawfal

Respuesta

8

Añadir

using System.IO;

y tendrá el comportamiento que espera. C# no hace que los espacios de nombres secundarios estén disponibles sin una directiva de uso (o calificación completa)

+0

+1 Bueno, solo de interés, quizás tenga alguna referencia a MSDN con respecto a tal requisito sería genial – sll

+0

Aquí va: http://msdn.microsoft.com/en-us/library/0d941h9d.aspx –

+0

Esto produce ' El nombre 'IO' no existe en el contexto actual' cuando escribo 'IO.Directory.GetFiles' –

0

Lo que está diciendo no es posible en C# que podría diferir entre C# y vb.NET.

Si va a convertir código vb.Net a C# que hacer uso de este sitio le ayudará mucho

vb.net to c#

Código fo ryou

System.IO.Directory.GetFiles(...) 

o añadir

using System.IO; 

hará por usted

+1

Me gustaría deshacerme del prefijo 'System'. –

+0

@ Clément, agregue 'using System.IO;' a su colección de espacios de nombres en la parte superior! – nawfal

Cuestiones relacionadas