简单的C#问题 temp=i+1 报错,类型转换不一致。怎么改
发布网友
发布时间:2023-05-18 08:09
我来回答
共2个回答
热心网友
时间:2023-09-28 00:26
uint16就是ushort,这个在MSDN上讲的其实很清楚,右边的i+1默认结果是int,所以你需要显式转换即temp=(UInt16)(i+1);
这是MSDN上对ushort的说明:
存在从 ushort 到 int、uint、long、ulong、float、double 或 decimal 的预定义隐式转换。
存在从 byte 或 char 到 ushort 的预定义隐式转换。 其他情况下必须使用显式转换。 例如,请看以下两个 ushort 变量 x 和 y:
ushort x = 5, y = 12;
以下赋值语句将产生一个编译错误,原因是赋值运算符右侧的算术表达式在默认情况下的计算结果为 int。
ushort z = x + y; // Error: conversion from int to ushort
若要解决此问题,请使用强制转换:
ushort z = (ushort)(x + y); // OK: explicit conversion
但是,在目标变量具有相同或更大的存储大小时,使用下列语句是可能的:
int m = x + y;
long n = x + y;
热心网友
时间:2023-09-28 00:27
temp=(Uint16)(i+1);