【发布时间】:2018-03-04 08:42:28
【问题描述】:
我正在构建一个 ASP.NET Core API,它返回元素周期表和太阳系中的行星。主要是玩 API 调用,以及 .NET 中的数据类型。在 Visual Studio 2017 中构建它。
我在使用行星的质量属性时遇到问题,以千克为单位。显然是一个大整数,所以我尝试将其声明为 long、Ulong、Int64 甚至 UInt64。但是,当我尝试输入新的行星模型并输入质量时,出现以下错误:
struct System.Int32
Represents a 32 bit signed integer.
Integral constant is too large.
这是我描述属性的 PlanetModel.cs:
...
public UInt64 Volume { get; set; } //In Kilometers
public Int64 Mass { get; set; } //In Kilograms
public float Gravity { get; set; } //In m/s^2
...
然而,当我转到我的 PlanetDataStore.cs 时,我正在尝试使用数据构建对象。
new PlanetModel()
{
Position = 1,
Name = "Mercury",
Distance = 57909050, //In Kilometers
Orbit = 0.240846F, //In years
SolarDay = 0.5F, //In Days
Radius = 2439, //In Kilometers
Volume = 60830000000, // In Kilometers
Mass = 330110000000000000000000, //In Kilograms
Gravity = 3.7F, //In m/s^2
},
我在弥撒中的第一个“3”上出现了一个红色错误,上面的错误。然而,当我将鼠标悬停在质量上时,它显示:“long PlanetMode.Mass {get; set;} 当我将鼠标悬停在等号上时,它显示:“struct System.Int64”
哪里有误会?为什么我的属性声明为 64 位整数,但值却停留在 32 位?
【问题讨论】:
-
//以年=> //以地球年:)
-
哈哈,是的。此时不会使用数据本身。该项目一直在试验如何在 .NET API 环境中使用对象、数据和 CRUD。我正在学习它,而我在 Java、JS 和 Go 方面只有一点经验。
标签: c# asp.net integer integer-overflow