Repository navigation
ZH TW CSharp Structure
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
C# 程式由型別宣告、方法、表達式和運算子組成。 using 連接命名空間; namespace 組織類型;該類別儲存資料和行為。方法代碼位於{ }內部,常規語句以;結尾。
請將此範例另存為 Example.csx,並與本頁其他範例分開執行。
Example.csx:
UO.Print("Ready");
await WaitAsync(10);
UO.Print("Done");結果:
Ready
Done
請將此範例另存為 Program.cs,並與本頁其他範例分開執行。
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結果 (Minimal.csproj):
Ready
嵌入腳本接收UO、Args、Cancellation和WaitAsync。語句是從上到下執行的。不需要Program類。
string message = "Script started";
UO.Print(message);
await WaitAsync(100);
UO.Print($"X={UO.GetX()}, Y={UO.GetY()}");聲明一個函數本身並不運行它。 ReportPosition()的呼喚是由她的身體發出的。
void ReportPosition()
{
int x = UO.GetX();
int y = UO.GetY();
UO.Print($"Position: {x}, {y}");
}
ReportPosition();
await WaitAsync(100);
ReportPosition();在典型的專案中,入口點是Main或頂級程式碼。命名空間、多個檔案和自訂程式庫被設計為標準的C#專案。
// 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 描述目標平台、來源、依賴項和編譯選項。 .cs 儲存代碼。 .csx 表示用於腳本運行的腳本。更改擴展名不會自動更改程式的結構或入口點。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>典型結構:MyScript.csproj、Program.cs、Models/、Services/。小場景下,一個.csx就夠了。在遊戲類別中,API透過參數或欄位明確傳遞;任意常規項目本身不會收到全域UO。
官方文件:程式和腳本結構 - Microsoft Learn。
一般 .cs 或 .csproj 程式碼以 Main 或最上層陳述式為優先,即使組件也包含 ICSharpScript。若沒有可執行的進入點,必須提供一個公開、非抽象且有公開無參數建構函式的 ICSharpScript 類別。一般程式碼透過傳入的內容或 CSharpScriptContext.Current 存取遊戲 API,不會自動取得未宣告的全域 UO 變數。
ClassicUO — Bad Newbie & C# Scripts IDE