Heim > Artikel > Backend-Entwicklung > C#-Lernprotokoll: Schreiben von hochwertigem Code und Verbesserungsvorschläge für die Organisation 4–8
4. TryParse ist besser als Parse
Die folgende TryParse-Methodendefinition
public static bool TryParse(string s, out Double result);
Parse meldet einen Fehler, wenn die Konvertierung fehlschlägt, TryParse jedoch ein Rückgabewert. Bestimmen Sie, ob die Konvertierung erfolgreich ist
string str1 = "abfc12"; if(double.TryParse(str1, out double dou1)) { Console.WriteLine(dou1); }
Wenn der Werttyp null sein muss , können wir einen speziellen Wert wie -1 verwenden, um festzustellen, ob int leer ist. Ändern Sie ihn am besten in int? Geben Sie ein, bestimmen Sie, ob es null ist
Nullable<int> i1 = 4; // i2 和 i1 的定义方式一样 只是写法不同 下面的int?是一个语法糖 int? i2 = null; int i3 = 0; //int类型可以默认转为int?类型 i2 = i3; //int?类型需要强转成int类型,如果是null则变为0 i3 = (int)i2;
Der einfache Unterschied besteht darin, dass const effizienter und readonly flexibler ist
const ist eine Compiler-Konstante, readonly ist eine Laufzeitkonstante
const int constNum = 1; public string name; public int age; public FirstType() { name = "aa"; age = constNum; age = 1; } //使用以上代码测试,下面的编译成的IL代码 IL_0000: ldarg.0 IL_0001: call instance void [mscorlib]System.Object::.ctor() IL_0006: nop IL_0007: nop IL_0008: ldarg.0 IL_0009: ldstr "aa" IL_000e: stfld string CSharpSuggest.FirstType::name IL_0013: ldarg.0 IL_0014: ldc.i4.1 IL_0015: stfld int32 CSharpSuggest.FirstType::age IL_001a: ldarg.0 IL_001b: ldc.i4.1 IL_001c: stfld int32 CSharpSuggest.FirstType::age IL_0021: ret
Es ist ersichtlich, dass 13, 14, 15 dasselbe sind wie 1a, 1b, 1c, also sind age = constNum; und age = 1; die effizienteste
const kann nur primitive Typen, Aufzählungstypen oder Zeichenfolgentypen ändern, während readonly keine Einschränkungen hat
const ist von Natur aus statisch und kann nicht zu statisch hinzugefügt werden
Die Der Wert von readonly befindet sich im Allgemeinen im Konstruktor. Beim Zuweisen von Werten in einer Funktion können Objekte jeder Klasse unterschiedliche schreibgeschützte Werte haben. Da const jedoch statisch ist, ist der Wert für alle Klassen gleich
book Im obigen Satz hatte ich immer eine Frage: Was ist der Unterschied zwischen der Zuweisung in der Klasse und der Zuweisung im Konstruktor? Der dekompilierte IL-Code ist nur der Unterschied in der Reihenfolge der Variablendefinition. Wenn Sie es wissen, lassen Sie es mich bitte wissen. .
Ich verstehe, dass Sie den Wert der Aufzählung nicht ändern sollten, wenn dies nicht erforderlich ist, da unerwartete Ergebnisse auftreten können
Der Grund ist derselbe wie oben
Verwandte Artikel:
C#-Lerndatensatz: Schreiben Verbesserungsvorschläge für hochwertigen Code 1-3
C#-Lernaufzeichnung: Verfassen von Verbesserungsvorschlägen für hochwertigen Code 9-15
Das obige ist der detaillierte Inhalt vonC#-Lernprotokoll: Schreiben von hochwertigem Code und Verbesserungsvorschläge für die Organisation 4–8. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!