Repository navigation
JA CSharp Keyword managed function pointer calling convention
Codex edited this page Oct 11, 2026
·
2 revisions
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
delegate* タイプでの管理は、管理された通話協定を指定します。これはデフォルトのオプションでもあります。アドレスは、静的メソッドから & 演算子によって取得されます。ポインターの宣言と呼び出しは安全でないコンテキストで実行されます。プロジェクトでは安全でないブロックを許可する必要があります。関数ポインターはデリゲート オブジェクトではありません。
この例を Example.cs として別に保存し、このページの他の例とは独立して実行してください。
Example.cs:
// PROJECT-EXAMPLE
unsafe
{
delegate* managed<int, int> twice = &Twice;
System.Console.WriteLine(twice(4));
}
static int Twice(int value) => value * 2;プロジェクトで <AllowUnsafeBlocks>true</AllowUnsafeBlocks> を有効にしてください。ポインターは示されたスコープ内でのみ有効です。
結果:
8
delegate* managed<int, int> operation = &Transform;ファイルExample.csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<LangVersion>14.0</LangVersion>
<Nullable>enable</Nullable>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
</Project>ファイルProgram.cs:
using System;
internal static unsafe class Program
{
public static void Main()
{
delegate* managed<int, int> square = □
Console.WriteLine(square(7));
}
private static int Square(int value) => value * value;
}結果:
49
ファイルExample.csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<LangVersion>14.0</LangVersion>
<Nullable>enable</Nullable>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
</Project>ファイルProgram.cs:
using System;
internal static unsafe class Program
{
public static void Main()
{
delegate* managed<int, int, int> combine = &Add;
Console.WriteLine(Apply(combine, 8, 3));
combine = &Subtract;
Console.WriteLine(Apply(combine, 8, 3));
}
private static int Apply(delegate* managed<int, int, int> operation, int left, int right)
=> operation(left, right);
private static int Add(int left, int right) => left + right;
private static int Subtract(int left, int right) => left - right;
}結果:
11
5
公式ソース: Microsoft Learn。
ClassicUO — Bad Newbie & C# Scripts IDE