视觉C++文本 0 整数



>我当前将 0U 作为函数的参数,它导致"警告 C4965:整数 0 的隐式框;使用 nullptr 或显式强制转换。此警告假设我使用 0U 表示nullptr;但是,我正在尝试实际使用 0U 作为无符号零值整数。我找到的所有帮助都建议如何将0U投射到nullptr反之亦然。建议?

String::Format("{0}", 0U);
String:

:Format 为格式字符串(第一个参数)后面的参数采用 object 类型的参数。由于 0 或 0U 都是结构体,它们将被隐式装箱为对象类型,因为这就是参数的类型。在您的情况下,隐式装箱还不错,因为代码无论如何都必须对其进行装箱,并且对于您来说,显式装箱它将需要更多的代码。

考虑到通常您只会做"0"而不是String::Format("{0}", 0),您的例子有点奇怪。通常,您有一个参数要引用并绕过隐式框警告,您将在其上调用ToString(无论如何,String::Format 都会在内部执行此操作)以避免额外的装箱。

所以

下面的应该给出警告,因为你正在将一个结构传递给一个需要对象的参数,所以结构将被隐式装箱

int x = 0;
String::Format("{0}", x);

为了摆脱隐含的拳击,我通常会这样做

int x = 0;
String::Format("{0}", x.ToString());

这会将字符串传递给函数,字符串是引用类型,因此不需要装箱。在我上面给出的情况下,避免隐式装箱确实在性能方面略有帮助,因为您将避免隐式装箱操作。

最新更新