ce qui est mieux(string) [0] vs Convert.ToString (lecteur [0])
var s = (string)reader[0]
ou
var s = Convert.ToString(reader[0])
?
ce qui est mieux(string) [0] vs Convert.ToString (lecteur [0])
var s = (string)reader[0]
ou
var s = Convert.ToString(reader[0])
?
Je dirais que reader.GetString(0)
Sortie Circra de NETFX 2 J'ai fait beaucoup de recherches et j'ai trouvé que les méthodes Get
J'ai aussi mesuré ceci en 3.5 et j'ai trouvé que cela se mesurait mieux que le lecteur (string) [0] '. – mquander
Y at-il des problèmes avec reader.GetString (0) lecture des valeurs de blob, par ex. Varchar (Max)? – Brettski
Je suppose que reader[0].ToString();
Si le lecteur [0] est en fait une chaîne, puis le (string)reader[0]
.
C'est plus clair et probablement plus rapide (à moins que le compilateur ne fasse une optimisation magique que je ne connais pas).
Qu'en est-
lecteur[0] .ToString();
var s = (string)reader[0]
vous donnera une exception en fonte de classe si elle ne peut pas être jeté comme une chaîne, tandis que
var s = Convert.ToString(reader[0])
se chargera plus gracieusement et vous obtiendrez null si elle ne peut pas être converti. Cela gèrera aussi plus de types d'objets pour le lecteur [0] car l'autre méthode autorisera uniquement les castings où le type peut être transtypé en une chaîne, alors que cela supportera n'importe quel type que la classe Convert peut gérer. Ce que je suppose est plus. Mais peut-être pas ...
C'est plus rapide, environ ~ 30% plus rapide dans mes tests:
var s = (string)reader[0];
Ceci, cependant, ne soufflera pas haut quand c'est nul:
var s = Convert.ToString(reader[0]);
Que diriez-vous de reader.GetString(0);
?
// Conveys that you are sure that reader[0] is a string and
// if it's not you probably have bigger problems
// than the resulting exception
var s = (string)reader[0];
// Conveys that you are hoping that reader[0] is convertible to a string
var s = Convert.ToString(reader[0])
Il est donc probablement nécessaire de choisir le contexte.
+1 pour considérer la lisibilité et l'intention du code, et pas seulement la performance. – rob
Je voudrais aller avec
reader[0].ToString();
Pourquoi personne ne considère la lisibilité et la maintenabilité?
Je sais l'auteur pose des questions sur:
var s = (string)reader[0]
or
var s = Convert.ToString(reader[0])
Mais qu'en est:
string s = reader["Fieldname"].ToString();
des thats plus lisible et plus sûr si vous échangez/supprimer/ajouter des colonnes et l'index est en train de changer .. Cela vaut à coup sûr plus de valeur.
Un gars a dit que la fonte dure est 30% plus rapide. Eh bien 30% de 1 ms sont 1,333 ms? sûrement pas 30% de l'ensemble des données aller chercher.
Cette réponse devrait être prise en compte. – jason
Pourquoi ne pas lire [0] .ToString() en option? – Oded
Pouvez-vous définir "mieux"? Plus rapide? Plus robuste? Plus facile à lire? Une plus petite empreinte mémoire? –