Estaba revisando el código fuente de Array.cs
cuando leí que Array.Copy()
no proporciona una garantía de que una copia sea exitosa y de hecho incluso corrompa la instancia original (corrígeme si estoy equivocado aquí). Para proporcionar tranquilidad, ConstrainedCopy()
parece lograr lo mismo.Array.Copy y Array.ConstrainedCopy - C#
Mi pregunta es:
1> ¿Por qué alguien usar Array.Copy()
si no parece garantizar una transferencia exitosa de los datos e ir a hacer daño, posiblemente, la instancia original? De hecho, todas las clases de colección parecen usar Array.Copy()
para aumentar su tamaño de instancia. ¿Por qué no utilizar ConstrainedCopy()
aquí
2> ¿Cuánto sería el costo de usar ConstrainedCopy()
todo el tiempo, entonces? Supongo que se agregaría más lógica al ConstrainedCopy()
?
¿Puede explicarnos qué son esas circunstancias extremas que pueden causar excepciones? De lo contrario, no sabremos si nuestro escenario es uno en el que tenemos que preocuparnos. – Gabe
Touche, algo así como una expección de falta de memoria puede causar una falla de la copia, la mayoría de estas circunstancias están fuera del alcance del método de copia y generalmente son un signo de un problema mayor. – BentOnCoding
La mayoría de las excepciones que pueden producirse desde el método 'Copiar' suceden antes de que comience la copia, por lo que no es necesario que' ConstrainedCopy' lo salve de un índice fuera de rango o sí no coincida. Las únicas excepciones posibles que puedo pensar que podrían ocurrir a mitad de copia son 'InvalidCastException' y' ThreadAbortException'. – Gabe