Skip to content

ES CSharp Structure

Codex edited this page Oct 11, 2026 · 2 revisions

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Estructura del programa y guión.

Manual C# · Ejemplos UO

Un programa C# consta de declaraciones de tipo, métodos, expresiones y operadores. using conecta el espacio de nombres; namespace organiza tipos; la clase almacena datos y comportamiento. El código del método se encuentra dentro de { }, las declaraciones normales terminan en ;.

Ejemplo sencillo (Example.csx)

Guarde este ejemplo por separado como Example.csx. Ejecútelo independientemente de los demás ejemplos de esta página.

Example.csx:

UO.Print("Ready");
await WaitAsync(10);
UO.Print("Done");

Resultado:

Ready
Done

Ejemplo sencillo (Program.cs + Minimal.csproj)

Guarde este ejemplo por separado como Program.cs. Ejecútelo independientemente de los demás ejemplos de esta página.

Program.cs:

// PROJECT-EXAMPLE
System.Console.WriteLine("Ready");

Minimal.csproj:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net10.0</TargetFramework>
    <EnableDefaultCompileItems>false</EnableDefaultCompileItems>
  </PropertyGroup>
  <ItemGroup><Compile Include="Program.cs" /></ItemGroup>
</Project>
dotnet run --project Minimal.csproj

Resultado (Minimal.csproj):

Ready

Escenario simple .csx

El script incrustado recibe UO, Args, Cancellation y WaitAsync. Las declaraciones se ejecutan de arriba a abajo. La clase Program no es necesaria.

string message = "Script started";
UO.Print(message);
await WaitAsync(100);
UO.Print($"X={UO.GetX()}, Y={UO.GetY()}");

Script con funciones personalizadas

Declarar una función no la ejecuta. La llamada ReportPosition() la realiza su cuerpo.

void ReportPosition()
{
    int x = UO.GetX();
    int y = UO.GetY();
    UO.Print($"Position: {x}, {y}");
}

ReportPosition();
await WaitAsync(100);
ReportPosition();

Programa normal .cs

En un proyecto típico, el punto de entrada es Main o código de nivel superior. Los espacios de nombres, múltiples archivos y bibliotecas personalizadas están diseñados como un proyecto C# estándar.

// PROJECT-EXAMPLE
using System;

namespace UserTools;

internal static class Program
{
    private static int Main(string[] args)
    {
        Console.WriteLine(args.Length > 0 ? args[0] : "Ready");
        return 0;
    }
}

El archivo del proyecto

.csproj describe la plataforma de destino, las fuentes, las dependencias y las opciones de compilación. .cs almacena el código. .csx denota un script para una ejecución con script. Cambiar la extensión no cambia automáticamente la estructura o el punto de entrada del programa.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net10.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
</Project>

Estructura típica: MyScript.csproj, Program.cs, Models/, Services/. En un escenario pequeño, un .csx es suficiente. En la clase de juego, API se pasa explícitamente a través de un parámetro o campo; un proyecto regular arbitrario no recibe un UO global por sí solo.

Documentación oficial: Estructura de programa y script - Microsoft Learn.

En el código .cs o .csproj normal, Main o las instrucciones de nivel superior tienen prioridad aunque el ensamblado también contenga ICSharpScript. Sin un punto de entrada ejecutable, proporcione una sola clase ICSharpScript pública y no abstracta con un constructor público sin parámetros. La API del juego se usa mediante un contexto recibido o CSharpScriptContext.Current, no mediante una variable global UO sin declarar.

Clone this wiki locally