奇怪的函数__Boxed 用于反编译后装箱和装箱

问题描述 投票:-1回答:1

您好,我在反编译可执行文件后尝试找到这部分代码的替换时遇到了一些问题。

我似乎无法在C#中找到__Boxed的替代品,在线装在任何地方

        DateTime startTime = dev.runningList[0].startTime;
        // ISSUE: variable of a boxed type
        __Boxed<int> day = (System.ValueType) startTime.Day;
        objArray2[0] = (object) day;
        object[] objArray3 = objArray1;
c# boxing
1个回答
1
投票

此代码将startTime.Day的整数装箱到对象中。您看到__Boxed<T>的原因可能是您正在使用的反编译工具的功能。

[当需要将值类型用作对象时,编译器会将其装箱,以便将其视为对象(基于堆)而不是值类型(基于堆栈)。

对于您自己的代码,您无需将int装箱,您可以编写以下代码:

DateTime startTime = dev.runningList[0].startTime;
int day = startTime.Day;
objArray2[0] = day;

将其编译为IL时,编译器将根据需要将day装箱-您无需手动将其装箱。

© www.soinside.com 2019 - 2024. All rights reserved.