Repository navigation
IT CSharp Structure
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
Un programma C# è costituito da dichiarazioni di tipo, metodi, espressioni e operatori. using collega lo spazio dei nomi; namespace organizza i tipi; la classe memorizza dati e comportamenti. Il codice del metodo si trova all'interno di { }, le istruzioni regolari terminano con ;.
Salvare questo esempio separatamente come Example.csx. Eseguirlo indipendentemente dagli altri esempi di questa pagina.
Example.csx:
UO.Print("Ready");
await WaitAsync(10);
UO.Print("Done");Risultato:
Ready
Done
Salvare questo esempio separatamente come Program.cs. Eseguirlo indipendentemente dagli altri esempi di questa pagina.
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.csprojRisultato (Minimal.csproj):
Ready
Lo script incorporato riceve UO, Args, Cancellation e WaitAsync. Le istruzioni vengono eseguite dall'alto verso il basso. La classe Program non è necessaria.
string message = "Script started";
UO.Print(message);
await WaitAsync(100);
UO.Print($"X={UO.GetX()}, Y={UO.GetY()}");Dichiarare una funzione non la esegue di per sé. La chiamata ReportPosition() viene fatta dal suo corpo.
void ReportPosition()
{
int x = UO.GetX();
int y = UO.GetY();
UO.Print($"Position: {x}, {y}");
}
ReportPosition();
await WaitAsync(100);
ReportPosition();In un progetto tipico, il punto di ingresso è Main o il codice di livello superiore. Spazi dei nomi, file multipli e librerie personalizzate sono progettati come un progetto C# standard.
// 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 descrive la piattaforma di destinazione, le origini, le dipendenze e le opzioni di compilazione. .cs memorizza il codice. .csx denota uno script per un'esecuzione con script. La modifica dell'estensione non modifica automaticamente la struttura o il punto di ingresso del programma.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>Struttura tipica: MyScript.csproj, Program.cs, Models/, Services/. In uno scenario piccolo, è sufficiente un .csx. Nella classe gaming, API viene passato esplicitamente attraverso un parametro o un campo; un progetto regolare arbitrario non riceve da solo un UO globale.
Documentazione ufficiale: Struttura del programma e degli script - Microsoft Learn.
Nel normale codice .cs o .csproj, Main o le istruzioni di primo livello hanno priorità anche se l’assembly contiene ICSharpScript. Senza un punto di ingresso eseguibile, serve una sola classe ICSharpScript pubblica e non astratta con un costruttore pubblico senza parametri. L’API di gioco è accessibile tramite il contesto passato o CSharpScriptContext.Current, non tramite una variabile globale UO non dichiarata.
ClassicUO — Bad Newbie & C# Scripts IDE