Zu deiner 1. Frage: (ich nehme mal an das Semikolon zu viel ist nur ein Schreibfehler)
Das sind 2 Unterschiedliche Variablen einmal innerhalb der Funktion und einmal innerhalb der Klasse.
Außerdem ist deine in der Klasse deklarierte Variable noch leer (nichts zugewiesen) während beim Parameter beim Funktionsaufruf der Wert übergeben werden muss.
Zur 2. Frage
Das ist quasi wie bei Frage 1. Die Variablen sind lokal deklariert aber bei der Funktion werden Werte als Parameter übergeben. Das ganze wirkt etwas verwirrend weil die gleichen Variablennamen verwendet wurden.
Deswegen auch das
this. davor damit der Compiler weiss das die Klassenvariable gemeint ist und nicht der Parameter der Funktion.
Eine einfache Möglichkeit sowas zu vermeiden ist es eine Kennzeichnung für alle globalen Variablen zu verwenden. (z.B. den Namen aller globaler Variablen mit einem Unterstrich beginnen lassen)
Dann würde es z.B. so aussehen:
C#-Quelltext
1:
| _sicherheitsebene = sicherheitsebene; |