Repository navigation
DE CSharp Structure
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
Ein C#-Programm besteht aus Typdeklarationen, Methoden, Ausdrücken und Operatoren. using verbindet den Namensraum; namespace organisiert Typen; Die Klasse speichert Daten und Verhalten. Der Methodencode befindet sich in { }, reguläre Anweisungen enden mit ;.
Speichern Sie dieses Beispiel separat als Example.csx. Führen Sie es unabhängig von den anderen Beispielen dieser Seite aus.
Example.csx:
UO.Print("Ready");
await WaitAsync(10);
UO.Print("Done");Ergebnis:
Ready
Done
Speichern Sie dieses Beispiel separat als Program.cs. Führen Sie es unabhängig von den anderen Beispielen dieser Seite aus.
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.csprojErgebnis (Minimal.csproj):
Ready
Das eingebettete Skript empfängt UO, Args, Cancellation und WaitAsync. Die Anweisungen werden von oben nach unten ausgeführt. Klasse Program wird nicht benötigt.
string message = "Script started";
UO.Print(message);
await WaitAsync(100);
UO.Print($"X={UO.GetX()}, Y={UO.GetY()}");Durch die Deklaration einer Funktion wird diese nicht selbst ausgeführt. Der Ruf ReportPosition() wird von ihrem Körper gemacht.
void ReportPosition()
{
int x = UO.GetX();
int y = UO.GetY();
UO.Print($"Position: {x}, {y}");
}
ReportPosition();
await WaitAsync(100);
ReportPosition();In einem typischen Projekt ist der Einstiegspunkt Main oder Code der obersten Ebene. Namespaces, mehrere Dateien und benutzerdefinierte Bibliotheken sind als Standard-C#-Projekt konzipiert.
// 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 beschreibt die Zielplattform, Quellen, Abhängigkeiten und Kompilierungsoptionen. .cs speichert den Code. .csx bezeichnet ein Skript für einen Skriptlauf. Das Ändern der Erweiterung führt nicht automatisch zu einer Änderung der Struktur oder des Einstiegspunkts des Programms.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>Typische Struktur: MyScript.csproj, Program.cs, Models/, Services/. In einem kleinen Szenario reicht ein .csx. In der Gaming-Klasse wird API explizit über einen Parameter oder ein Feld übergeben; Ein beliebiges reguläres Projekt erhält von sich aus kein globales UO.
Offizielle Dokumentation: Programm- und Skriptstruktur – Microsoft Learn.
In gewöhnlichem .cs- oder .csproj-Code hat Main beziehungsweise der Code auf oberster Ebene Vorrang, auch wenn die Assembly ICSharpScript enthält. Ohne ausführbaren Einstiegspunkt ist genau eine öffentliche, nicht abstrakte ICSharpScript-Klasse mit öffentlichem parameterlosem Konstruktor erforderlich. Auf die Spiel-API greifen Sie über einen übergebenen Kontext oder CSharpScriptContext.Current zu; eine nicht deklarierte globale Variable UO ist nicht verfügbar.
ClassicUO — Bad Newbie & C# Scripts IDE