Flashcards
Boxing e unboxing

Cards in this deck (7)
- 1C# é uma linguagem tipada?C# é em sua maior parte uma linguagem tipada estática.
Isto significa que o compilador C# irá verificar o tipo de cada expressão. Isso ajuda a encontrar erros como tentar guardar um tipo em outro tipo (como uma string em um int).
Pode ser que você saiba q um tipo pode ser usado com outro tipo e você quer dizer isso para o compilador. Devido a isso, às vezes vc tem q fazer conversão entre os tipos.
Mas, parte do C# n é de tipagem estática. A nova palavra-chave dynamic (C# 4.0) permite anular (override) na verificação do ambiente de compilação e trabalhar com C# como uma linguagem fracamente tipada. - 2Tipo valor x tipo referênciaA diferença importante entre um tipo de valor e um tipo d referência é q o tipo de valor armazena seu valor diretamente.
Um tipo de referência armazena uma referência que aponta para um objeto no heap que contém o valor.
Ao trabalhar com tipos de valor em C#, às vezes você deseja armazenar um tipo de valor dentro de um tipo de referência. - 3Boxing e unboxingboxing = processo de pegar um tipo e valor, colocando-o dentro de um novo objeto no heap, e armazenar uma referência na stack para ele.
unboxing = exatamente o oposto: Pega o item da stack e retorna um tipo de valor que contém o valor da (heap). - 4Boxing e unboxing exemplo

- 5o que acontece qdo escrevemos uma operação de unbox inválida?runtime lançará InvalidCastException
Vc n vai ver o erro em tempo de compilação pq o compilador confia q vc vai fazer a chamada corretamente. Em tempo de execução, no entanto, a conversão falha, e uma exceção é lançada. - 6como é feita a conversão boxing => unboxing e vice-versA? Se chamarmos GetType(), o que ocorre?unboxing, você precisa converter explicitamente seu objeto de um tipo referência para um tipo de valor.
Boxing q não é óbvio. Se chamar GetType sempre faz "boxing" do seu tipo de valor porque GetType é definida apenas em um objeto e n pode ser substituído.
Boxing ocorre em outras situações tb: como uma surpresa é que um tipo de valor é "boxing" qdo vc o usa como uma interface. Ex:
IFormattable x = 3; - 7boxing x unboxing como é o desempenho dessas operações? Que recurso do .Net pode ajudar em coleções?Há algumas complicações de desempenho com cada operação de box e unbox:
Ao usar as coleções não genéricas para armazenar um tipo de valor, você tem um muitaaaaas dessas operações. As operações de boxing e unboxing podem prejudicar o desempenho; no entanto, c/ o apoio de generics, isso é menos um problema pq vc pode armazenar tipos de valor em uma coleção s/ fazer boxing neles.
Information
- Description
- 70-483 C# Flashcards on Boxing e unboxing, created by Thiago Russo on 01/05/2017.
- Created by
- Thiago Russo
- Views
- 1
- Rating