2009-07-30 10 views

Antwort

4

C# erfordert, dass Sie Ihren lokalen Variablen einen Wert zuweisen, bevor Sie sie verwenden.

Vector2 v = new Vector2(); 
2

Es funktioniert, weil eine Struktur automatisch initialisiert wird. Alle Mitglieder sind auf den Standardwert ihres Typs festgelegt. Aber wenn Sie eine nicht zugewiesene Variable wie diese verwenden, liegt es normalerweise daran, dass Sie vergessen haben, sie vorher zuzuweisen. Ich denke, der Compiler macht hier keinen Unterschied zwischen Strukturen und Klassen.

0

Imho, das ist eine sehr schlechte Idee. Strukturen in C# sind Werttypen. C# legt eine Reihe von Einschränkungen fest, um sicherzustellen, dass alle Felder einer Struktur initialisiert werden:

  • Standardkonstruktoren sind nicht zulässig.
  • Konstruktoren müssen alle Felder innerhalb der Struktur initialisieren.
  • Wenn Sie eine Struktur nicht über einen Konstruktor instanziieren, werden alle Elemente auf das Ergebnis des Aufrufs von default() für den Elementtyp festgelegt. Dies ermöglicht die Verwendung von Strukturen in Arrays. Es erlaubt auch, was Sie tun, ist aber auch der Grund für die Warnung.

    Idealerweise sollten Sie einen Konstruktor definieren und die Struktur mit dem Konstruktor initialisieren.

    Bearbeiten: Um die Einschränkung für den Standardkonstruktor (parameterlos) zu verdeutlichen, können Sie keinen explizit definieren, da der Compiler einen zur Verfügung stellt, mit dem alle Mitglieder initialisiert werden.

    Verwandte Themen