lo mejor(cadena) lector [0] vs Convert.ToString (lector [0])
var s = (string)reader[0]
o
var s = Convert.ToString(reader[0])
?
lo mejor(cadena) lector [0] vs Convert.ToString (lector [0])
var s = (string)reader[0]
o
var s = Convert.ToString(reader[0])
?
yo diría que reader.GetString(0)
Versión Circra de NETFX 2 Investigué mucho y encontré que los métodos Get
También he medido esto en 3.5 y he comprobado que esto es medible mejor que '(string) reader [0]'. – mquander
¿Hay problemas con reader.GetString (0) leyendo valores de blob, p. Varchar (Max)? – Brettski
Conjeturaría reader[0].ToString();
Si el lector [0] es en realidad una cadena, entonces el (string)reader[0]
.
Es más claro y probablemente más rápido (a menos que el compilador realice una optimización mágica que desconozco).
qué sobre
lector [0] .ToString();
var s = (string)reader[0]
le dará una excepción de difusión clase si no se puede lanzar como una cadena, mientras que
var s = Convert.ToString(reader[0])
manejará con más gracia y obtendrá nula si no puede ser convertido Esto también manejará más tipos de objetos para el lector [0], ya que el otro método solo permitirá conversiones en las que el tipo se puede convertir a una cadena, mientras que esto admitirá cualquier tipo que la Clase Convert pueda manejar. Lo cual supongo que es más. Pero no puede ser ...
Esto es más rápido, sobre ~ 30% más rápido en mis pruebas:
var s = (string)reader[0];
Esto, sin embargo, no soplar cuando es nulo:
var s = Convert.ToString(reader[0]);
¿Qué tal 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])
Por lo tanto, es probablemente una cuestión de elegir teniendo en cuenta el contexto.
+1 por considerar la legibilidad e intención del código, y no solo por el rendimiento. – rob
Me gustaría ir con
reader[0].ToString();
¿Por qué nadie considera la legibilidad y facilidad de mantenimiento?
sé que el autor se pregunta sobre:
var s = (string)reader[0]
or
var s = Convert.ToString(reader[0])
Pero ¿qué pasa con:
string s = reader["Fieldname"].ToString();
eso es más fácil de leer y más segura si cambio/cancelación/añade columnas y el índice está cambiando .. .esto es más valioso.
Un tipo dijo que el yeso duro es un 30% más rápido. ¿El 30% de 1 ms son 1,333 ms? seguramente no el 30% de la obtención de datos completos.
Esta respuesta debe ser atendida. – jason
¿Por qué no lector [0] .ToString() como una opción? – Oded
¿Puedes definir "mejor"? ¿Más rápido? ¿Más robusto? Más fácil de leer? ¿Huella de memoria más pequeña? –