Me gustaría saber si los enunciados siguientes alguna vez arrojan un resultado diferente para los tipos de referencia, o son idénticos?predeterminado (T) versus Activator.CreateInstance (T)
Si son idénticos, podría utilizar siempre predeterminado (T), en este ejemplo, si el objetivo era dar salida al valor predeterminado de T ?:
if (typeof(T).IsValueType || typeof(T) == typeof(String))
{
return default(T);
}
else
{
return Activator.CreateInstance<T>();
}
Best way to test if a generic type is a string? (c#)
ta!
No, el valor predeterminado (T) para un tipo de referencia devuelve nulo, CreateInstance() no lo hace, ya que crea un objeto de tipo T. Es difícil adivinar qué intenta realmente este código hacer. –
¿No es 'default (string)' null también? – BoltClock
¡Gracias por aclarar la confusión! El ejemplo de código era parte de la confusión, lo vi en la publicación stackoverflow vinculada debajo de él ... – Cel