3
respostas

ContaCorrente outraConta = obj as ContaCorrente;

Poderia me explicar está comparação? Não compreendi.

ContaCorrente outraConta = obj as ContaCorrente;

3 respostas

Gabriel,

Desculpe, mas...

  1. O sinal de igual (=) sozinho é uma atribuição. O sinal de igual duplo (==) é uma comparação.
  2. Conforme disse o instrutor, se esta conversão falhar (= obj as ContaCorrente;) a variável "outraConta" receberá NULL e NÃO lançará uma exceção no sistema.

Então o instrutor usou desta forma para fazer dentro da atribuição uma conversão de OBJ para ContaCorrente sem precisar tratar uma exceção (erro) no processamento e guardar o valor dentro da variável "outraConta" que é uma variável do tipo "ContaCorrente".

Por favor, aprenda mais! Leia também os rápidos comentários diretamente dentro dos links abaixo:

==========================================================

Operadores de atribuição (referência C#)

Artigo

06/04/2022

2 minutos para o fim da leitura

https://docs.microsoft.com/pt-br/dotnet/csharp/language-reference/operators/assignment-operator

==========================================================

Operadores de comparação (referência do C#)

Artigo

06/04/2022

2 minutos para o fim da leitura

https://docs.microsoft.com/pt-br/dotnet/csharp/language-reference/operators/comparison-operators

==========================================================

What are object data types in C#? | O que são tipos de dados de objeto em C#?

Os tipos de objetos podem receber valores de quaisquer outros tipos, tipos de valor, tipos de referência, tipos predefinidos ou definidos pelo usuário. No entanto, antes de atribuir valores, ele precisa de conversão de tipo.

O tipo de objeto é a classe base final para todos os tipos de dados em C# Common Type System (CTS). Object é um alias para a classe System.Object.

Quando um tipo de valor é convertido em tipo de objeto, é chamado de boxing e, por outro lado, quando um tipo de objeto é convertido em um tipo de valor, é chamado de unboxing.

O seguinte é um exemplo -

object obj;
obj = 100; // this is boxing

https://www.tutorialspoint.com/What-are-object-data-types-in-Chash#:~:text=The%20Object%20Type%20is%20the%20ultimate%20base%20class,to%20a%20value%20type%2C%20it%20is%20called%20unboxing.

==========================================================

[]'s,

Fabio I.

Desculpe Fábio,

Pois não especifiquei direito seria seria referente ao "obj as ContaCorrente;" que fiquei na dúvida.

Gabriel,

Okay, o nome disso ("obj as ContaCorrente;") é "conversão de tipo". Existem várias maneiras de converter tipos, mas depende muito do que está sendo convertido.

No caso acima está fazendo uma conversão de um OBJECT para um CLASSE "Conta Corrente", em outras palavras, de uma classe BASE para uma classe DERIVADA. No C#, essa conversão exige um operador de conversão.

O operador "as" (como) retorna o valor mesclado se o valor puder ser lançado para um tipo específico, senão ele retornará nulo.

Aprenda mais sobre este assunto lendo os seguinte artigos:

==========================================================

Conversão de tipo no .NET

Artigo

14/04/2022

31 minutos para o fim da leitura

https://docs.microsoft.com/pt-br/dotnet/standard/base-types/type-conversion

==========================================================

Conversões boxing e unboxing (Guia de Programação em C#)

Artigo

06/04/2022

6 minutos para o fim da leitura

https://docs.microsoft.com/pt-br/dotnet/csharp/programming-guide/types/boxing-and-unboxing

==========================================================

Kunal Tandon

May 20, 2018

4 min read

Boxing and Unboxing (as and is operator) in C#

An article from www.knowledgescoops.com

O operador AS

https://medium.com/@kunaltandon.kt/boxing-and-unboxing-as-and-is-operator-in-c-4f0b4b4e1f32

==========================================================

Espero ter ajudado.

[]'s,

Fabio I.