Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Sugerencia
¿No está familiarizado con el desarrollo de software? Comience primero con los tutoriales de introducción . Le guiarán por la escritura de sus primeros programas de C# antes de obtener información sobre la estructura del programa.
¿Competente en otro idioma? Es posible que desee echar un vistazo a la sección Primeros pasos para la sintaxis específica de C# y luego volver aquí.
Los programas de C# se compilan a partir de estos bloques de creación principales: los espacios de nombres organizan los tipos, los tipos (clases, estructuras, interfaces, enumeraciones y delegados) definen el comportamiento y los datos, y las instrucciones y expresiones funcionan en tiempo de ejecución. La forma de estructurar el punto de entrada depende del estilo de aplicación que elija.
Elección del estilo de aplicación
Al crear un programa de C#, realice dos opciones independientes sobre cómo estructurarlo:
-
¿Basado en archivos o basado en proyectos?
- Una aplicación basada en archivos se ejecuta desde un único
.csarchivo sin archivo de proyecto. - Una aplicación basada en proyectos usa un
.csprojarchivo y puede abarcar varios archivos de origen.
- Una aplicación basada en archivos se ejecuta desde un único
-
¿Instrucciones de nivel superior o
Mainmétodo?- Las instrucciones de nivel superior permiten escribir código ejecutable directamente en la parte superior de un archivo.
- Un
Mainmétodo ajusta el punto de entrada en un método estático explícito.
Tanto las aplicaciones basadas en proyectos como las aplicaciones basadas en archivos admiten cualquier estilo de punto de entrada.
Aplicaciones basadas en archivos frente a aplicaciones basadas en proyectos
A partir de C# 14 y .NET 10, las aplicaciones basadas en archivos permiten ejecutar un programa contenido en un único *.cs archivo sin un archivo de proyecto. Almacene el código siguiente en un archivo denominado hello-world.cs y ejecútelo con dotnet run hello-world.cs o dotnet hello-world.cs:
#!/usr/bin/env dotnet
Console.WriteLine("Hello, World!");
Nota:
La #! línea permite que los shells de Unix ejecuten el archivo directamente. En cualquier sistema Unix, establezca el permiso execute (+x) y ejecute el archivo desde la línea de comandos.
Las aplicaciones basadas en archivos admiten toda la sintaxis de C# y pueden usar directivas de preprocesador para configurar el sistema de compilación. Use aplicaciones basadas en archivos para pequeñas utilidades de línea de comandos, prototipos y experimentos. Una aplicación basada en archivos consta de un único archivo en un directorio:
my-app/
└── hello-world.cs
Las aplicaciones basadas en proyectos usan un .csproj archivo y los comandos de la .NET CLIdotnet new, dotnet build, y dotnet run flujo de trabajo. Elija aplicaciones basadas en proyectos cuando el programa abarque varios archivos o necesite una configuración de compilación específica. Una aplicación basada en proyectos incluye un archivo de proyecto junto con uno o varios archivos de código fuente:
my-app/
├── my-app.csproj
├── Program.cs
├── Models/
│ └── Person.cs
└── Services/
└── GreetingService.cs
Si la aplicación basada en archivos crece, puede convertirla fácilmente en una aplicación basada en proyectos. Ejecute dotnet project convert para generar un archivo de proyecto a partir del archivo de origen existente.
Si sabe que la aplicación necesita varios archivos de origen desde el principio, comience con una aplicación basada en proyectos. Evita el paso de conversión y puede organizar el código en archivos independientes inmediatamente.
Instrucciones de nivel superior en comparación con el método Main
Mediante instrucciones de nivel superior, puede escribir código ejecutable directamente en un archivo sin encapsularlo en una clase y Main método. Este estilo es el valor predeterminado al crear una nueva aplicación de consola con dotnet new console. En el ejemplo siguiente se muestra un programa de C# moderno que usa instrucciones de nivel superior:
Console.WriteLine("Hello, World!");
namespace YourNamespace
{
class YourClass
{
}
struct YourStruct
{
}
interface IYourInterface
{
}
delegate int YourDelegate();
enum YourEnum
{
}
}
Solo un archivo de un proyecto puede tener instrucciones de nivel superior y el punto de entrada es la primera línea de texto del programa en ese archivo. A medida que construyes programas más grandes, incluyes más elementos del programa.
También puede definir un método estático Main explícito como punto de entrada del programa:
// A skeleton of a C# program using an explicit Main method
namespace YourNamespace;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
Ambos estilos de punto de entrada funcionan con aplicaciones basadas en archivos y basadas en proyectos. Ambos estilos admiten las mismas características.
Compilación y ejecución de programas de C#
C# es un lenguaje compilado . En el caso de las aplicaciones basadas en proyectos, use el dotnet build comando para compilar archivos de origen en un paquete binario. Use dotnet run para compilar y ejecutar en un paso. La dotnet CLI, incluida en el SDK de .NET, proporciona muchas herramientas para crear, compilar y administrar proyectos de C#.
En el caso de las aplicaciones basadas en archivos, dotnet run hello-world.cs compila y ejecuta el único archivo directamente: no se requiere ningún archivo de proyecto.
Expresiones e instrucciones
Si ha seguido los tutoriales de introducción , ya escribió expresiones e instrucciones. Cada línea de código que ha escrito era una o la otra (o ambas). Ahora vamos a definir esos términos.
Las expresiones y instrucciones son los bloques de creación fundamentales de un programa de C#. Una expresión genera un valor. Una instrucción ejecuta una acción y generalmente termina con un punto y coma.
A continuación se muestran expresiones:
-
42(valor literal) -
x + y(operación aritmética) -
Math.Max(a, b)(llamada al método que genera un valor) -
condition ? trueValue : falseValue(expresión condicional) -
new Person("John")(creación de objetos)
Una instrucción realiza una acción. Las instrucciones controlan el flujo del programa, declaran variables o invocan operaciones. A continuación se muestran declaraciones:
-
int x;(declaración) -
int x = 42;(instrucción de declaración con inicialización) -
Console.WriteLine("Hello");(instrucción de llamada de método) -
if (condition) { /* code */ }(instrucción condicional) -
return result;(instrucción de devolución)
Las instrucciones a menudo contienen expresiones, y las expresiones pueden incrustarse dentro de otras expresiones. Por ejemplo, la siguiente instrucción de declaración asigna f al resultado de una expresión de suma. Esa expresión de adición agrega los resultados de dos expresiones de llamada de método:
var maxResult = Math.Max(a, b) + Math.Max(c, d);
Para obtener información detallada sobre las declaraciones, vea Declaraciones. Para obtener información sobre los miembros con cuerpo de expresión, vea Miembros con cuerpo de expresión.