Por que essa opção de tipo de caixa é considerada confusa?
Eu estava procurando uma maneira de refatorar e simplificar uma função em que eu tenho que fazer a classificação de dados dependendo do tipo de classe de entrada e fiquei preso emswitch(input.GetType()):
pesquisa rápida levou-me aPor que a instrução C # switch não permite o uso de typeof / GetType ()? com um link parahttp: //blogs.msdn.com/peterhal/archive/2005/07/05/435760.asp
Li a documentação, mas não recebi a justificativa de que a situação é confus
Do artigo:
Infelizmente, como muitos recursos de linguagem 'simples', a troca de tipo não é tão simples quanto parece. Os problemas começam quando você olha para um exemplo mais significativo e não menos importante como este:
class C {}
interface I {}
class D : C, I {}
switch typeof(e) {
case C: ... break;
case I: ... break;
default: ... break;
}
O que não é simples nisso? A chamadatypeof(e)
não pode retornar - este é umI
D
eC
. Tem que retornar umType
não uma matriz de tipos de interface e classe -Type[]
. Então o tipo doclass D
éD
. ED
corresponde a umdefault:
ramo
Estou faltando alguma coisa?