KO CSharp Keyword managed function pointer calling convention - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki
Π£ΠΊΡΠ°ΡΠ½ΡΡΠΊΠ° Β· Π ΡΡΡΠΊΠΈΠΉ Β· English Β· Deutsch Β· FranΓ§ais Β· Italiano Β· EspaΓ±ol Β· ηΉι«δΈζ Β· ζ₯ζ¬θͺ Β· νκ΅μ΄
νΈλλΆ C# Β· μ€μ© κ°μ΄λ
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 νμ΅.