Repository navigation
FR CSharp Structure
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
Un programme C# se compose de déclarations de type, de méthodes, d'expressions et d'opérateurs. using connecte l'espace de noms ; namespace organise les types ; la classe stocke les données et le comportement. Le code de la méthode est situé à l'intérieur de { }, les instructions normales se terminent par ;.
Enregistrez cet exemple séparément dans Example.csx. Exécutez-le indépendamment des autres exemples de cette page.
Example.csx:
UO.Print("Ready");
await WaitAsync(10);
UO.Print("Done");Résultat:
Ready
Done
Enregistrez cet exemple séparément dans Program.cs. Exécutez-le indépendamment des autres exemples de cette page.
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.csprojRésultat (Minimal.csproj):
Ready
Le script intégré reçoit UO, Args, Cancellation et WaitAsync. Les instructions sont exécutées de haut en bas. La classe Program n'est pas nécessaire.
string message = "Script started";
UO.Print(message);
await WaitAsync(100);
UO.Print($"X={UO.GetX()}, Y={UO.GetY()}");Déclarer une fonction ne l'exécute pas elle-même. L'appel ReportPosition() est émis par son corps.
void ReportPosition()
{
int x = UO.GetX();
int y = UO.GetY();
UO.Print($"Position: {x}, {y}");
}
ReportPosition();
await WaitAsync(100);
ReportPosition();Dans un projet typique, le point d'entrée est Main ou code de niveau supérieur. Les espaces de noms, plusieurs fichiers et bibliothèques personnalisées sont conçus comme un projet 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 décrit la plate-forme cible, les sources, les dépendances et les options de compilation. .cs stocke le code. .csx désigne un script pour une exécution scriptée. Changer l'extension ne change pas automatiquement la structure ou le point d'entrée du programme.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>Structure typique : MyScript.csproj, Program.cs, Models/, Services/. Dans un petit scénario, un .csx suffit. Dans la classe gaming, API est transmis explicitement via un paramètre ou un champ ; un projet régulier arbitraire ne reçoit pas de UO global par lui-même.
Documentation officielle : Structure du programme et des scripts - Microsoft Learn.
Dans le code .cs ou .csproj ordinaire, Main ou les instructions de niveau supérieur ont priorité, même si l’assembly contient ICSharpScript. Sans point d’entrée exécutable, fournissez une seule classe ICSharpScript publique et non abstraite avec un constructeur public sans paramètre. L’API du jeu est accessible via un contexte transmis ou CSharpScriptContext.Current, pas via une variable globale UO non déclarée.
ClassicUO — Bad Newbie & C# Scripts IDE