Question

Dans .Net, vous pouvez lire une chaîne de valeur dans un autre type de données en utilisant soit <datatype>.parse ou Convert.To<DataType>.

Je ne suis pas familier avec les principes fondamentaux de l'analyser versus convertir je suis donc toujours à une perte quand on demande quelle est la meilleure/plus rapide/plus approprié.

Donc, - ce qui est le meilleur chemin dans ce type de circonstances?

Était-ce utile?

La solution

L' Convert.ToXXX() les méthodes sont des objets qui pourraient être de la bonne ou de type similaire, tandis que .Parse() et .TryParse() spécifiquement pour les chaînes:

//o is actually a boxed int
object o = 12345;

//unboxes it
int castVal = (int) 12345;

//o is a boxed enum
object o = MyEnum.ValueA;

//this will get the underlying int of ValueA
int convVal = Convert.ToInt32( o );

//now we have a string
string s = "12345";

//this will throw an exception if s can't be parsed
int parseVal = int.Parse( s );

//alternatively:
int tryVal;
if( int.TryParse( s, out tryVal ) ) {
    //do something with tryVal 
}

Si vous compilez avec l'optimisation des drapeaux TryParse est très rapide, c'est le meilleur moyen pour obtenir un nombre à partir d'une chaîne.Toutefois, si vous avez un objet qui pourrait être un int ou peut-être une chaîne de caractères à Convertir.ToInt32 est plus rapide.

Autres conseils

Voici une réponse pour vous:

http://www.dotnetspider.com/forum/ViewForum.aspx?ForumId=77428

Mais je pense que dans les versions modernes de .NET, la meilleure chose à faire est d'utiliser TryParse en tout cas, si il n'y a aucun doute que la conversion du travail.

Je suis un grand fan de TryParse, car il vous permet d'économiser beaucoup de maux de tête de l'erreur de capture quand il y a une chance que la valeur que vous allez analyser n'est pas du type approprié.

Ma commande est généralement de:

  • Parse (si je peux être sûr que la valeur sera le bon type, et je ne essayer de faire en sorte cet)
  • TryParse (si je ne peux pas être sûr, qui se produit chaque fois que la saisie de l'utilisateur est impliqué, ou d'entrée d'un système ne vous permet plus de contrôle)
  • Convertir (qui, je pense, je n'ai pas utilisé depuis que j'ai commencé à l'aide d'Analyser et de TryParse, mais je peux me tromper)

Il y a aussi le DirectCast méthode que vous devez utiliser uniquement si vous êtes sûr de ce que le type de l'objet.Il est plus rapide, mais ne fait pas de contrôles appropriés.J'utilise DirectCast quand je suis à l'extraction des valeurs à partir d'un faiblement typé DataTable quand je sais que le type de chaque colonne.

Si vous avez besoin de vitesse, je suis assez sûr directe casting est le moyen le plus rapide.Cela étant dit, j'ai l'habitude d'utiliser .D'analyser ou de .TryParse parce que paraît-il, pour rendre les choses plus facile à lire, et à avoir un comportement plus prévisible.

Convertir fait des appels Analyser sous le capot, je crois.Donc, il y a peu de différence, et c'est vraiment semble juste être une question de goût personnel.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top