Heim  >  Artikel  >  Backend-Entwicklung  >  C#-Lernprotokoll: Schreiben von hochwertigem Code und Verbesserungsvorschläge für die Organisation 4–8

C#-Lernprotokoll: Schreiben von hochwertigem Code und Verbesserungsvorschläge für die Organisation 4–8

php是最好的语言
php是最好的语言Original
2018-08-06 14:56:551432Durchsuche

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);
}

5. Es wird empfohlen, int? zu verwenden, um sicherzustellen, dass der Werttyp auch null sein kann

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;

6. So verwenden Sie readonly und const

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

C#-Lernprotokoll: Schreiben von hochwertigem Code und Verbesserungsvorschläge für die Organisation 4–8

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. .

7. Verwenden Sie 0 als Standardwert der Aufzählung

Ich verstehe, dass Sie den Wert der Aufzählung nicht ändern sollten, wenn dies nicht erforderlich ist, da unerwartete Ergebnisse auftreten können

8. Vermeiden Sie die Bereitstellung angezeigter Werte für Aufzählungstypelemente

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn