Lokale Variablen in C# (Lokale Variablen in C#), Lektion, Seite 723500
https://www.purl.org/stefan_ram/pub/variablen_csharp (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
C#-Kurs

Lokale Variablen in C♯ 

Beispiel

Program.cs

public static class Program
{ public static void Main()
{ { int n = 2;
double x = 2.3;
decimal d = 2.3m;
string s = "abc";

global::System.Console.WriteLine( n );
global::System.Console.WriteLine( x );
global::System.Console.WriteLine( d );
global::System.Console.WriteLine( s ); }

{ var n = 2;
var x = 2.3;
var d = 2.3m;
var s = "abc";

global::System.Console.WriteLine( n );
global::System.Console.WriteLine( x );
global::System.Console.WriteLine( d );
global::System.Console.WriteLine( s ); }}}

global::System.Console.Out
2
2.3
2.3
abc
2
2.3
2.3
abc
Program.cs

public static class Program
{ public static void Main()
{ int n = 2;
double x = 2.3;
decimal d = 2.3m;
string s = "abc";

/* Wert der Zuweisung */
global::System.Console.WriteLine( n = 4 );
global::System.Console.WriteLine( ( x = 2.1 )+ 1.1 );
global::System.Console.WriteLine( s = "def" );

/* Wirkung der Zuweisung */
global::System.Console.WriteLine( n );
global::System.Console.WriteLine( x );
global::System.Console.WriteLine( s );

/* Zuweisung als Anweisungsausdruck */
n = 1;
x = 8.1;
s = "ghi";

global::System.Console.WriteLine( n );
global::System.Console.WriteLine( x );
global::System.Console.WriteLine( s ); }}

global::System.Console.Out
4
3.2
def
4
2.1
def
1
8.1
ghi

Erklärung

Variablen
ECMA-334, 4th edition:
Variables represent storage locations. Every variable has a type that determines what values can be stored in the variable.
(…)
A local variable is declared  by a local-variable-declaration, foreach-statement, or specific-catch-clause of a try-statement.
Variablendeklarationen
  • statische Klassenvariablen, Zugriffe von innen/außen, Vergleich mit Methoden und Eigenschaften
  • Blockvariablen
  • Vergleich mit Literalen
  • Zusammenspiel mit Klassenvariablen
  • Typwandlung bei Initialisierung
  • Folge von Blöcken mit gleichen Variablennamen
  • Verschachtelung von Blöcken
  • Wie weit kann gerechnet werden?
  • statische Variablen werden stillschweigend auf Fehlwerte initialisiert, Blockvariablen nicht
  • checked { a = b + c; }
Zuweisung
Eine Variable ist ein Speicher, und ein Speicher kann geschrieben oder gelesen werden.
Die Leseoperation  wird durch Verwendung des Variablennamens als Argument oder Operand der meisten Operatoren ausgedrückt.
Die Schreiboperation  wird durch Verwendung des Variablennamens Operand spezieller Operatoren oder – unter Umständen – als Argument spezieller Funktionen ausgedrückt. Insbesondere durch Verwendung als linker Operand der Zuweisung »=«.
v = 2;
v = v
Links: Referenzkontext ⁻, rechts Wertkontext 
Als Wert einer Variablen ist jeder Wert aus dem Typ der Variablen zulässig.
Der Typ einer Variablen kann nicht verändert werden.
Die Variablen in dem folgenden Block sind praktisch Konstanten, da sie nur einmal initialisiert und danach nicht mehr verändert werden. C♯  erlaubt es aber (im Gegensatz zu C++  oder Java ) nicht, solche Variablen als Konstanten zu kennzeichnen, also festzulegen, daß sie nach ihrer Initialisierung nicht mehr verändert werden können sollen.
{ double x = 1.0; 
double y = global::System.Math.Sin( x );
double z = global::System.Math.Sqrt( y );
double u = global::System.Math.Pow( y, 0.51 );
global::System.Console.WriteLine( z );
global::System.Console.WriteLine( u ); }}
Zuweisungsverträglichkeiten
int kann an double zugewiesen werden

Zuweisungen an Eigenschaften

Program.cs
public static class Program
{ public static void Main()
{ global::System.Console.WriteLine( global::System.Console.Title );
global::System.Console.Title = "abc";
global::System.Console.WriteLine( global::System.Console.Title ); }}
Protokoll
C:\example
abc

Der Wert der Zuweisung

Der Wert einer Zuweisung ist der zugewiesene Wert.

Program.cs

public static class Program
{ public static void Main()
{ int n;

global::System.Console.WriteLine( ( n = 1000 ) );

}}

Protokoll
1000

(Durch ein implizite Wandlung in den Typ der Zielvariablen wird der Wert in C♯  nie verändert, so daß es nicht nötig ist, zwischen dem zugewiesenen Wert und dem Wert der Variablen nach der Zuweisung zu unterscheiden.)

Übung

/   Erhöhen

Wie wird der Wert einer Variablen i um 7 erhöht?

  • Erhöhen einer Variablen um 7?

Übung

/   Vertauschen

Wie wird der Wert einer Variablen i mit dem Wert einer Variablen j vertauscht?

  • Vertauschen zweier Variablen?

Hinweis für den Dozenten  ► Hier gegebenenfalls einen Debugger vorstellen

Übung

public static class Program
{ public static void Main()
{ double x = 1.0;
double y = global::System.Math.Sin( x );
double z = global::System.Math.Sqrt( y );
double u = global::System.Math.Pow( y, 0.51 );
global::System.Console.WriteLine( z );
global::System.Console.WriteLine( u ); }}

0.9173172759781081
0.9157353176470164

Schreiben Sie die Übersetzungseinheit "Sinus1.cs" so um, daß dieselben Werte ausgegeben werden und dieselben Numerale und Funktionen zur Berechnung verwendet werden, aber keine Variablen mehr in dem Programm vorkommen. Ersetzen Sie zunächst die Variablen "x" überall durch ihre Definition, also durch den Wert "1.0", und entfernen Sie die Definition der Variablen "x". Nach diesem Schema können dann alle anderen Definitionen eliminiert werden, bis nur noch die beiden Ausgabeausdrücke übrigbleiben.

Übung

public static class Program
{ public static void Main()
{ global::System.Console.WriteLine( global::System.Math.Sin( 1.0 + global::System.Math.Log( 2.178 )));
global::System.Console.WriteLine( global::System.Math.Cos( 1.0 + global::System.Math.Log( 2.178 ))); }}

0.9785261962919047
-0.20612249554693626

Schreiben Sie die Einheit "Sinus2.cs" so um, daß der derzeit wiederholt vorkommende gleiche Teilausdruck nur noch einmal vorkommt. Speichern Sie dessen Wert dazu in eine Variable und verwenden Sie die Variable dann an seiner Stelle. Dabei soll nichts schon im Kopf ausgerechnet werden, es sollen weiterhin dieselben Operatoren und Methoden verwendet werden. Die Ausgabe des Programmes darf sich dadurch nicht ändern.

 

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723500 stefan_ram:723500 Lokale Variablen in C# Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723500, slrprddef723500, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/variablen_csharp