Tôi đang làm việc trên một dll C# liên kết với UDK, trong đó bạn phải trả về một số nguyên 32 bit không dấu cho các giá trị bool - do đó 0 là false, là đúng. Các UDK được giá trị và chuyển đổi nó hoặc là đúng hay sai ...C# trả về UInt32 so với Int32 - C# suy nghĩ 0 và 1 là Int32
tôi đang làm một số mã và thấy điều này:
[DllExport("CheckCaps", CallingConvention = CallingConvention.StdCall)]
public static UInt32 CheckCaps()
{
return (Console.CapsLock ? 1 : 0);
}
đã cho tôi lỗi của:
"Lỗi , Không thể chuyển đổi rõ ràng loại 'int' thành 'uint'. Hiện có một chuyển đổi rõ ràng là (bạn có thiếu một diễn viên không?) "
Trong khi tôi hiểu lỗi, Tôi didnt có vấn đề này trước khi làm
if (File.Exists(filepath))
return 1;
else
return 0;
Từ hình thức của nó giống như vấn đề với chuỗi typecasting C# 's, mà nếu bạn có điều này:
int example = 5;
Console.Writeline(example);
Console.Writeline(example + "");
Các Console.WriteLine đầu tiên sẽ đưa ra một lỗi vì C# sẽ không tự đúc thành một chuỗi
Tôi hiểu rằng có những lý do logic đằng sau các lỗi này (khi chúng xảy ra trong các trường hợp này), nhưng có sự khắc phục cho điều này ngoài thực hiện Convert.ToUInt32 (1) và Chuyển đổi. ToUInt32 (0)?
(Tôi hy vọng cho một sửa chữa tương tự như cách bạn có thể đi 0.f cho nổi, nhưng đối với intergers unsigned)
Hãy tìm hiểu sự khác biệt giữa IDE và trình biên dịch. Visual Studio nghĩ không có gì, vì nó chỉ đơn giản là một môi trường phát triển lưu trữ nhiều ngôn ngữ và trình biên dịch khác nhau. Vấn đề là với C#, và * không * Visual Studio. Sự khác biệt là quan trọng. –
Xin lỗi, tôi hiểu điều đó. Đó là tôi lười biếng ... Tôi sẽ thay đổi câu hỏi để phù hợp với –