Maison > Article > développement back-end > Dossier d'apprentissage C# : écriture de code de haute qualité et amélioration des suggestions d'organisation 4-8
4. TryParse est meilleur que Parse
La définition de la méthode TryParse suivante
public static bool TryParse(string s, out Double result);
Parse signalera une erreur si la conversion échoue, mais TryParse renvoie La valeur peut être utilisée pour déterminer si la conversion est réussie
string str1 = "abfc12"; if(double.TryParse(str1, out double dou1)) { Console.WriteLine(dou1); }
Si le. Le type de valeur doit être nul, nous pouvons utiliser une valeur spéciale. Par exemple, -1 est utilisé pour déterminer si int est vide. Est-il préférable de le changer en int ? Tapez, déterminez s'il est nul
Nullable<int> i1 = 4; // i2 和 i1 的定义方式一样 只是写法不同 下面的int?是一个语法糖 int? i2 = null; int i3 = 0; //int类型可以默认转为int?类型 i2 = i3; //int?类型需要强转成int类型,如果是null则变为0 i3 = (int)i2;
La simple différence est que const est plus efficace et la lecture seule est plus flexible
const est compilé Constante de périphérique, la lecture seule est une constante d'exécution
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
On peut voir que 13, 14, 15 sont identiques à 1a, 1b, 1c, donc age = constNum et age = 1 ; sont équivalents, donc le plus efficace
const ne peut modifier que les types primitifs, les types d'énumération ou les types de chaîne, la lecture seule n'a aucune restriction
const est naturellement statique et ne peut pas ajouter de statique
readonly Les valeurs sont généralement attribuées dans le constructeur. Chaque objet de classe peut avoir une valeur en lecture seule différente, mais comme const est statique, la valeur est la même pour toutes les classes
Il y a la phrase ci-dessus dans le livre. J'ai toujours eu une question, quelle est la différence entre l'affectation au sein de la classe et l'affectation dans le constructeur. Je ne l'ai pas trouvée en ligne. Le code IL décompilé n'est que la différence dans l'ordre. de définitions de variables. S'il y en a, faites-le-moi savoir si vous le savez. .
Ce que je comprends, c'est que si ce n'est pas nécessaire, ne modifiez pas la valeur de l'énumération, car des résultats inattendus peuvent survenir
La raison est la même que ci-dessus
Articles connexes :
Record d'apprentissage C# : Rédaction de suggestions d'amélioration de code de haute qualité 9-15
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!