Skip to content

IT CSharp Structure

Codex edited this page Oct 11, 2026 · 2 revisions

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

Struttura del programma e dello script

Manuale C# · Esempi UO

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 ;.

Esempio semplice (Example.csx)

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

Esempio semplice (Program.cs + Minimal.csproj)

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.csproj

Risultato (Minimal.csproj):

Ready

Scenario semplice .csx

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()}");

Script con funzioni personalizzate

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();

Programma normale .cs

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;
    }
}

Il dossier di progetto

.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.

Clone this wiki locally