Arbeiten mit .NET: Materialien/ Ideensammlung

Klassendefinition

Attribute sind bisher noch nirgends vorgesehen. Passen sie besser zu .NET oder zu den Programmiersprachen? Da sie unterschiedlichste Bedeutung haben, brauchen wir sicherlich mehrere Kapitel dafür.

Groß- und Kleinschreibung

Das muss für jede Programmiersprache ausdrücklich erwähnt werden: zulässig oder nicht? Wie wird üblicherweise gearbeitet? Es steckt in den Namenskonventionen und bei Variablen; aber wo sollte gezielt darauf hingewiesen werden? Das muss doch ziemlich früh erfolgen, aber wo?

Für das Kapitel "if-Verzweigungen"

Wenn der zu bearbeitende Teil nur aus einer einzigen Anweisung besteht, können die Klammern entfallen. Der folgende Ablauf ist mit dem vorstehenden Code identisch:

			if (DateTime.Now.Hour < 12) 
				Console.Write("Guten Morgen, ");
			else if (DateTime.Now.Hour < 18) 
				Console.Write("Grüß Gott, ");
			else 
				Console.Write("Guten Abend, ");

Wir empfehlen aber, die Anweisungen zu if immer als Block mit {...} zu definieren:

  • Es kann keine Fehler geben, wenn Klammern versehentlich vergessen werden.
  • Spätere Änderungen des Codes durch weitere oder andere Anweisungen sind einfacher.
  • Der Code ist klarer gegliedert.

Auch hier gilt: Ein "schöner" Code ist nicht immer kürzer, sondern er sollte gut lesbar sein.

Für das Kapitel "switch-Verzweigungen"
	int i = 3;
	switch(i) 
	{
		case 0:
			// mach etwas für i=0
			goto case 3;
		case 1:
		case 2:
			// mach etwas für i=1 oder i=2
			break;
		case 3:
			// mach etwas für i=3 und auch für i=0 
			break;
		default:
			// mach etwas in allen anderen Fällen
			break;
	}

Der komplette Code zu switch ist als Block in {...} zusammenzufassen. Jeder einzelne Fall wird mit case und einem Wert begonnen. Mehrere Werte können hintereinander abgefragt werden, aber nur einzeln (nicht als Wertebereich "von 10 bis 20"). Die Anweisungen für jeden Wert müssen mit break (oder einer anderen sinnvollen Sprunganweisung) beendet werden. Der default-Fall gilt für alle anderen, nicht ausdrücklich genannten Fälle. Die Reihenfolge der Fallunterscheidungen spielt übrigens keine Rolle.

Für DateTime.ToString

Aufgabe: Hole den Wochentag mit dem lokalen Text.

Lösung 1 ist enthalten in Arbeiten_mit_.NET:_Grundlagen:_Datentypen/_Andere_Typen:

d0.ToString("dddd")

Lösung 2:

DateTime aday = DateTime.Now;
string dayName = CultureInfo.CurrentCulture.DateTimeFormat.GetDayName(
     CultureInfo.CurrentCulture.Calendar.GetDayOfWeek(aday));