2016-02-19 66 views
1

这是什么问题?我得到了前两行的错误。C#,不能隐式地将`long'类型转换为`uint'

bounds.xMin = (Mathf.FloorToInt (x/GridSize) * GridSize); 
bounds.yMin = (Mathf.FloorToInt (y/GridSize) * GridSize); 
bounds.xMax = bounds.xMin + GridSize; 
bounds.yMax = bounds.yMin + GridSize; 

bounds.xMinbounds.yMinxyGridSize都是类型uint

+0

尝试铸造到uint?即bounds.xMin =(uint)(Mathf.FloorToInt(x/GridSize)* GridSize); –

回答

4

您的所有变量都是uint,但返回类型Mathf.FloorToIntint

要将uint乘以int,C#会将两个操作数转换为long,因为它是唯一可以表示其所有可能值的整数类型。该操作的结果也将是long

您需要将整个结果或至少Mathf.FloorToInt的结果转换为uint

从C#语言规范:

对于二元+, - ,*,/,%,&,^,|,= =,=,>,<,> =,和< =操作符,操作数转换为T型,其中T是int,uint,long和ulong中的第一个,它们可以完全表示两个操作数的所有可能值。然后使用类型T的精度执行操作,并且结果的类型是T

相关问题