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

Dossier d'apprentissage C# : écriture de code de haute qualité et amélioration des suggestions d'organisation 4-8

php是最好的语言
php是最好的语言original
2018-08-06 14:56:551430parcourir

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

5 Il est recommandé d'utiliser int pour s'assurer que le type de valeur peut également être nul

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;

6 Comment utiliser la lecture seule et const

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

Dossier dapprentissage C# : écriture de code de haute qualité et amélioration des suggestions dorganisation 4-8

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

7. Utilisez 0 comme valeur par défaut de l'énumération

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

8. Évitez de fournir des valeurs affichées pour les éléments de type énumération

La raison est la même que ci-dessus

Articles connexes :

Enregistrement d'apprentissage C# : Rédaction de suggestions d'amélioration de code de haute qualité 1-3

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn