Skip to content

DE CSharp Keyword safe

Codex edited this page Oct 11, 2026 · 2 revisions

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C#: safe

Handbuch C# · Praktischer Leitfaden

Vorschaumodifikator des aktualisierten Speichersicherheitsmodells: Der Autor markiert die Deklaration ausdrücklich so, dass kein unsicherer Kontext des Aufrufers erforderlich ist.

Einfaches Beispiel (Example.cs)

Speichern Sie dieses Beispiel separat als Example.cs. Führen Sie es unabhängig von den anderen Beispielen dieser Seite aus.

Example.cs:

// PROJECT-EXAMPLE
class ManagedValue { public int Count { get; set; } }

Dieses kurze Beispiel verwendet C# 14. Es implementiert nicht das hier nicht verfügbare Preview-Konstrukt safe.

Syntax

public static safe extern int Method();

Dies ist eine Vorschau von C# 15 / .NET 11. Die offiziellen Regeln erfordern LangVersion=Vorschau und separate Aktivierung aktualisierter Speichersicherheitsregeln für ihre Anwendung. Das aktuelle C# 14 unterstützt diese Deklarationen nicht.

Status: Vorschau; Die aktuelle Konfiguration C# 14 / .NET 10 unterstützt diese Beispiele nicht.

Beispiel 1: Grundform

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.IO;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;

public static class Program
{
    public static async Task Main(string[] args)
    {
        Console.WriteLine(Native.GetCurrentProcessId());
    }
}
public static class Native { [DllImport("kernel32.dll")] public static safe extern uint GetCurrentProcessId(); }

Beispiel 2: eine weitere praktische Form

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.IO;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;

public static class Program
{
    public static async Task Main(string[] args)
    {
        Union value = new() { Integer = 1065353216 };
        Console.WriteLine(value.Real);
    }
}
[StructLayout(LayoutKind.Explicit)] public struct Union { [FieldOffset(0)] public safe int Integer; [FieldOffset(0)] public safe float Real; }

Offizielle Quelle: Microsoft Learn.

Clone this wiki locally