Did you know?
-
Enums können Extensionmethods haben.
enum AnEnum { Element1, Element2 } static class Extension { public static string EnumExtension(this AnEnum e) { return "Enum Extension"; } } class Program { static void Main(string[] args) { Console.WriteLine(AnEnum.Element1.EnumExtension()); } }
-
Nützlich, aber sieht man eher selten:
var irgendwas = GetResult() ?? String.Empty;
-
loks schrieb:
Nützlich, aber sieht man eher selten:
var irgendwas = GetResult() ?? String.Empty;
Liegt wahrscheinlich daran, das es für die wenigsten lesbar ist.
Ich bevorzuge da eher die langform. Entweder wie unten aufgeführt oder die ganz lange.
var sResult = GetResult(); var irgendwas = !String.IsNullOrEmpty(sResult) ? sResult : string.Empty;
-
inflames2k schrieb:
loks schrieb:
var irgendwas = GetResult() ?? String.Empty;
Liegt wahrscheinlich daran, das es für die wenigsten lesbar ist.
Du meinst, dass die wenigsten wissen, wie ihre Sprache funktioniert? Weil: Lesbar ist das auf jeden Fall, sehr gut sogar.
-
inflames2k schrieb:
loks schrieb:
Nützlich, aber sieht man eher selten:
var irgendwas = GetResult() ?? String.Empty;
Liegt wahrscheinlich daran, das es für die wenigsten lesbar ist.
Ich bevorzuge da eher die langform. Entweder wie unten aufgeführt oder die ganz lange.
var sResult = GetResult(); var irgendwas = !String.IsNullOrEmpty(sResult) ? sResult : string.Empty;
Das Beispiel an sich ist natürlich Sinnfrei, aber im Bezug auf Lesbarkeit gewinnt das doch um Längen gegen den Mehrzeiler.
class A { public String Name { get; set; } public String Strasse{ get; set; } } void test() { A a = new A() { Name = GetName() ?? String.Empty, Strasse = GetStrasse() ?? String.Empty }; }
-
using kann gestapelt werden.
using(StreamReader sr = new StreamReader(".txt")) using(StreamWriter sw = new StreamWriter(".txt")) { sr.ReadLine(); sw.WriteLine(); }
-
Nicht gestapelt, sondern verschachtelt (wie andere Anweisungen z.B. for, if, while etc. auch).
Dein Beispiel entspricht also voll ausgeschrieben:
using(StreamReader sr = new StreamReader(".txt")) { using(StreamWriter sw = new StreamWriter(".txt")) { var line = sr.ReadLine(); sw.WriteLine(line); } }
Und wie man sieht wäre dann folgendes besser
using(StreamReader sr = new StreamReader(".txt")) { var line = sr.ReadLine(); using(StreamWriter sw = new StreamWriter(".txt")) { sw.WriteLine(line); } }
(oder noch gekürzt ohne die inneren geschweiften Klammern)
-
Mit stapeln meinte ich auch eher, dass man es genau übereinander schreiben kann, was hilfreich sein kann, wenn man 3-4 using-Blöcke brauch und nicht möchte, dass der Code unnötig weit nach rechts rückt.
Aber deine Erklärung ist natürlich richtig.
-
freaky schrieb:
... was hilfreich sein kann, wenn man 3-4 using-Blöcke brauch ...
3-4, herzig
using (var seedReader = new StreamFileReader(m_seedStreams[level], false)) using (var seedSignatureReader = new StreamFileReader(m_seedStreams[level + 1], false)) using (var sourceReader = CreateSourceReader(level)) using (var countingSourceReader = new CountingFileReader(sourceReader, false)) using (var sourceSignatureReader = new StreamFileReader(sourceSignatureStream, false)) using (var targetSink = new StreamByteSink(targetStream, false)) using (var reconstructingNeedSink = new ReconstructingNeedSink()) using (var skippingNeedSink = new SkippingNeedSink()) using (var batchShapingNeedSink = new BatchShapingNeedSink()) {
ps:
Ist euch schonmal folgendes abgegangen?try { ... } finally { CleanupThiny1ThatCanThrow(); } finally { CleanupThiny2ThatCanThrow(); } finally { CleanupThiny3ThatCanThrow(); } finally { CleanupThiny4ThatCanThrow(); }
?
-
Na ja, das ist ja nur ein Frage der Code-Formatierung:
for (int i=0; i<10; i++) for (int j=0; j<10; j++) Console.WriteLine("{0}, {1}", i, j)
oder
if (x > y) if (x > z) x = y + z;
:p
-
Dann zeig mal wie das für try-finally aussehen würde.
Davon abgesehen: jegliche Formatierung die VS nicht kann ist ziemlich uninteressant. Ich kämpfe nicht mehr gegen das System.
Wenns Plugins gibt die besser formatieren und sich nahtlos integrieren (Auto-Format beim Tippen von ";" usw.), OK. Immer noch doof für Leute die das Plugin dann nicht haben, aber damit könnte ich leben.Aber manuell formatiere ich nix mehr was das nächste Ctrl+K, Ctrl+F nicht überlebt. Bin ja kein Masochist.
ps: Ich find's schrecklich dass man bei VS die Formatierungsregeln nicht zum Projekt dazuhängen kann. Wenn jmd. ein Plugin kennt das hier abhilft: bitte melden
-
Für automatische Code-Formatierung im VS empfehle ich {url=http://www.codemaid.net/]CodeMaid[/url].
PS: Ich bezog mich bei meinem vorherigen Beitrag auf den von freaky.
Selber nutze ich bei mehreren [i]using[i] auch eure Schreibweise - mir ging es nur um das Verständnis.