2016-02-19 113 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

相關問題