Hace poco un alumno me hizo una consulta acerca de una pregunta que le habían planteado en un ejercicio académico. Considero interesante reproducirla, porque nos permite clarificar y distinguir lo que es el propio lenguaje C# y las librerías que habitualmente utilizamos desde C#. (Por cierto, si necesitas aprender bien a desarrollar con C# y .NET, échale un vistazo a este curso.)
Enunciado
Indicar cómo se puede escribir un texto dentro de un archivo en disco utilizando únicamente el lenguaje C#. Se darán puntos extra a quien responda en una sola línea.
Respuesta breve
Es imposible.
Respuesta larga
Se trata de una pregunta-trampa. El lenguaje C# no define instrucciones de entrada/salida. Escribir un archivo en disco es una operación de salida. En consecuencia, no se puede hacer utilizando únicamente C#.
Para escribir el fichero, será necesario recurrir a alguna biblioteca externa que sea capaz de realizar las operaciones de entrada/salida. Bajo circunstancias normales, típicamente se utilizarán las bibliotecas de la Framework Class Library (FCL) incluidas en el Framework de .Net. Para escribir en un archivo en disco, usaremos las clases contenidas en el espacio de nombres System.IO dentro de la biblioteca System.DLL.
Para ello, será necesario añadir una referencia a esa biblioteca . Si el programa se genera con Visual Studio, de manera predeterminada se añade automáticamente la referencia a System.DLL. Lo mismo sucede si compilamos desde línea de comandos con CSC.EXE.
Una vez referenciada la biblioteca , es muy sencillo escribir el texto en el archivo:
System.IO.File.WriteAllText(@”c:\ruta\nombre.txt”, “Contenido”);
Nótese que hemos resuelto en una sola línea el problema inicialmente planteado... pero no lo hemos hecho utilizando únicamente C#. Aunque nosotros sólo hemos tecleado código en C#, nos estamos apoyando en una biblioteca externa, que por dentro utiliza (directa o indirectamente) un bloque de código que no está escrito en C#.
Enseñanza
Con frecuencia alguien plantea en los foros públicos una consulta sobre programación insistiendo en que tiene que hacerlo solo con C#. En general, lo que en realidad quieren decir es que desean hacerlo solo con las librerías del Framework, sin adquirir ninguna biblioteca de terceras partes. Pero recordemos que esas librerías no forman parte del lenguaje C#, simplemente suelen usarse conjuntamente con C#, pero son independientes del lenguaje.
Una cosa es el lenguaje (C#, Visual Basic o cualquiera de los muchos disponibles en .NET) y otra muy diferente es la plataforma .NET. Es necesario tenerlo muy claro.
Nota: Autor de la imagen de la cabecera photosteve101(www.planetofsuccess.com/blog/ ). Imagen usada bajo licencia CC