Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Diferença entre System.Int32 vs int

Boa noite,

Gostaria de saber se existe alguma diferença na prática, seja de performance ou apenas consenso na comunidade, entre executar a cópia da variável dessa forma:

static void Main(string[] args)
        {
            int idade = 30;

            System.Int32 copiaIdade = idade;

            Console.WriteLine($"Idade: {idade}");
            Console.WriteLine($"copiaIdade: {copiaIdade}");

            idade = 23;

            Console.WriteLine($"Idade: {idade}");
            Console.WriteLine($"copiaIdade: {copiaIdade}");
        }

Ou dessa forma:

static void Main(string[] args)
        {
            int idade = 30;

            int copiaIdade = idade;

            Console.WriteLine($"Idade: {idade}");
            Console.WriteLine($"copiaIdade: {copiaIdade}");

            idade = 23;

            Console.WriteLine($"Idade: {idade}");
            Console.WriteLine($"copiaIdade: {copiaIdade}");
        }

Existe uma regra para quando usar int ou System.Int32?

1 resposta
solução!

Olá Vinicius!

O int e System.Int32 (Ou apenas Int32) na prática são a mesma coisa, apesar do primeiro pertencer aos tipos primitivos e o segundo aos tipos do framework .NET, não tem diferença de performance.

Por boas práticas de SOLID, tendemos a utilizar sempre aquilo que há menos chances de sofrer alterações ao longo do tempo, ou seja, o int por ser algo mais primitivo do que o Int32, que está no framework, pode ser considerado mais "estável" e com isso faz mais sentido utilizar ele.

Caso a Microsoft resolva alterar a nomenclatura de Int32 para Int32b eu não precisaria ajustar todo o meu código.

Eu particularmente uso o int quando estou definindo um tipo, e a versão do framework quando uso os métodos estáticos, como por exemplo Int32.Parse("1009"), mas com o tempo você vai desenvolver o seu próprio jeito de usar.

Como dica, recomendo sempre usar os tipos mais primitivos sempre que possível: string ao invés do System.String, bool ao invés de System.Boolean e por aí vai... Todos seguem a mesma linha raciocínio.

Espero ter te ajudado, e se ainda ficar com dúvida, pode perguntar!

Abraços!