Repository navigation
ES CSharp Structure
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
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 ;.
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
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.csprojResultado (Minimal.csproj):
Ready
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()}");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();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;
}
}.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.
ClassicUO — Bad Newbie & C# Scripts IDE