Я ищу способ написать код, который проверяет, включено ли значение.
Мои предварительные исследования показывают, что .NET делает все возможное, чтобы скрыть этот факт, а это означает, что GetType()
и IsValueType
не показывают разницу между значением в коробке и значением unboxed. Например, в следующих выражениях LinqPad С# я верю, что o1
помечен в коробку, а i1
не вставлен в коробку, но я хотел бы проверить его в коде или, во-вторых, способ узнать, при просмотре любой переменной или значения, даже если ее тип является "динамическим" или "объектом", независимо от того, помещен ли он в коробку или нет.
Любые советы?
// 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");