Unsicherer Code via unsafe Zeiger in C (Teil 3)
Kommentare

Verwendung von unsafe
Wurden alle Optionen geprüft und die Verwendung von unsafe ist unvermeidlich, kann die unsafe-Modifizierung für folgende Elemente verwendet werden: Klasse, Methode, Struktur (struct),

Verwendung von unsafe

Wurden alle Optionen geprüft und die Verwendung von unsafe ist unvermeidlich, kann die unsafe-Modifizierung für folgende Elemente verwendet werden: Klasse, Methode, Struktur (struct), Schnittstelle, Delegate, Felder, Eigenschaften, Index, Operatoren, Konstruktoren, Destruktoren und inline bzw. Blockanweisung. Listing 2 zeigt verschiedene Möglichkeiten, wie unsafe sich auf die verschiedenen Elemente auswirkt.

Listing 2

class UnsafeExample
{
  private unsafe void UnsafeA()
  {
    // Code
  }
  private void UnsafeB()
  {
    // Code
    unsafe
    {
      // nur hier sind Zeigeroperationen möglich
    }
    // Code
  }
}  

Wie in Listing 2 deutlich wird, bezieht sich das Schlüsselwort immer auf einen gesamten Block. In Listing 2 wurde die Methode UnsafeA als unsafe deklariert. Das bewirkt, dass der gesamte Methodenkörper innerhalb eines unsicheren Kontexts ausgeführt wird. Gleiches gilt, wenn eine Klasse als unsafe deklariert wird, dann befinden sich alle Mitglieder der Klasse innerhalb eines unsicheren Kontexts. Interessant ist noch das Verhalten bei vererbten und überschriebenen Mitgliedern (Listing 3). Die Methode AA in der Klasse A ist als unsafe deklariert. Von dieser Klasse leitet die Klasse B ab und überscheibt dabei die Methode AA.

Listing 3

public class A
{
  public unsafe virtual void AA(int paymentNoCustomer)
  {
    int *paymentNo;
    paymentNo = &paymentNoCustomer;
    Console.WriteLine(*paymentNo);
  }
}

public class B : A
{
  public override void AA(int paymentNoCustomer)
  {
  }
}  

Die neue Methode AA ist nicht automatisch als unsafe deklariert. Müssen auch innerhalb der neu definierten Methode AA Zeigeroperationen durchgeführt werden, muss die Methode explizit als unsafe ausgezeichnet werden.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -