Curiosidades C# – Definindo Array de Objetos

Na maioria dos casos quando definimos um Array, especificamos o seu tipo no momento de sua inicialização. Porem no C#, todas as classes têm como base a System.Object, isso significa que podemos criar um Array genérico de objetos e colocar nele qualquer tipo de informação, incluindo os tipos mais fundamentais do Sytem.

Sobre o object

O tipo object é um alias de System.Object no .NET. No sistema de tipos unificado do C#, todos os tipos, predefinidos e definidos pelo usuário, tipos de referência e tipos de valor, herdam direta ou indiretamente de System.Object. Você pode atribuir valores de qualquer tipo a variáveis do tipo object. [Microsoft]

Exemplo:

using System;
namespace ArrayOfObjects
{
    class Program
    {
        static void Main(string[] args)
        {
            var objectArray = new object[5];
            objectArray[0] = 1;
            objectArray[1] = "A simple string";
            objectArray[2] = true;
            objectArray[3] = DateTime.Now;
            objectArray[4] = new SampleClass();

            foreach (var obj in objectArray)
            {
                Console.WriteLine($"This is type '{obj.GetType()}' and value '{obj}'");
            }
        }
    }

    public class SampleClass {
        public override string ToString()
        {
            return "This is a SampleClass Instance";
        }
    }
}
/* This will print
This is type 'System.Int32' and value '1'
This is type 'System.String' and value 'A simple string'
This is type 'System.Boolean' and value 'True'
This is type 'System.DateTime' and value '09/09/2020 22:20:55'
This is type 'ArrayOfObjects.SampleClass' and value 'This is a SampleClass Instance'
 */

Resultado

Durante a iteração do array, é impresso o tipo usando a chamada ‘GetType()’ e posteriormente o valor simplesmente concatenando-o a uma string.

Dentro da classe ‘SampleClass’ foi adicionado um override do método ToString() pois ao tentar converter uma instância de objeto para string o padrão é imprimir o tipo do objeto.

Nota

C# é uma linguagem fortemente tipada e fazer uso de um Array de Object, apesar de possível, não é uma boa prática de programação.

Qualquer dúvida ou dicas, entre em contato: leandrolt@gmail.com

Principais referências

– Livro: Pro C# 7: With .NET and .NET Core – Andrew Troelsen
– https://docs.microsoft.com/pt-br/dotnet/csharp/language-reference/builtin-types/reference-types

Leave a Reply

Your email address will not be published. Required fields are marked *