Como testar se um valor está na caixa em C # / .NET?
Estou procurando uma maneira de escrever código que teste se um valor está na caix
Minhas investigações preliminares indicam que o .NET se esforça para esconder o fato, o que significa queGetType()
eIsValueType
não revela a diferença entre um valor em caixa e um valor em caixa. Por exemplo, nas seguintes expressões LinqPad C #, acredito queo1
está na caixa ei1
não está na caixa, mas eu gostaria de testá-lo em código ou, em segundo lugar, uma maneira de saberCOM CERTEZ ao examinar qualquer variável ou valor, mesmo que seu tipo seja "dinâmico" ou "objeto", com ou sem caix
Algum conselho?
// boxed? -- no way to tell from these answers!
object o1 = 123;
o1.GetType().Dump("o1.GetType()");
o1.GetType().IsValueType.Dump("o1.GetType().IsValueType");
// not boxed? -- no way to tell from these answers!
int i1 = 123;
i1.GetType().Dump("i1.GetType()");
i1.GetType().IsValueType.Dump("i1.GetType().IsValueType");