我正在开发一个将C# dll与UDK绑定的项目,其中需要返回一个无符号32位整数来代表布尔值 - 因此0表示假,任何大于0的值表示真。 UDK获取该值并将其转换为true或false...
我在写代码时发现了这个问题:
[DllExport("CheckCaps", CallingConvention = CallingConvention.StdCall)]
public static UInt32 CheckCaps()
{
return ( Console.CapsLock ? 1 : 0);
}
给我报了如下错误:
"错误,无法隐式将类型'int'转换为'uint'。存在显式转换(是否缺少强制转换?)"
虽然我理解这个错误,但在执行之前并没有出现过这个问题。
if (File.Exists(filepath))
return 1;
else
return 0;
从外观上看,C#存在字符串类型转换问题,如果您有以下代码:
int example = 5;
Console.Writeline( example);
Console.Writeline( example + "");
第一条console.writeline会出错,因为C#不会自动将其转换为字符串
我知道这些错误之所以发生是有逻辑原因的(因为它们发生在这些情况下),但是否有其他解决方法,而不是使用Convert.ToUInt32(1)和Convert.ToUInt32(0)?
(我希望有一种类似于浮点数中的0.f的修复方式,但适用于无符号整数)