C# 无法在C中声明任何有符号整数类型#

C# 无法在C中声明任何有符号整数类型#,c#,asp.net,visual-studio,long-integer,uint64,C#,Asp.net,Visual Studio,Long Integer,Uint64,我正在Visual Studio 2019中开发一个ASP.NET应用程序。我遇到了一个C#以前从未遇到过的问题。我似乎无法声明UInt64以外的任何整数类型 尝试声明Int64或long会给我带来错误,因为它表示我正在尝试将UInt64(或ulong)转换为这些类型之一 具体错误如下(显示的Azure租户ID是虚拟值,不要惊慌): 线路 Int64 tenantInt = 11132432026456784806; 给出以下错误 Error CS0266 Cannot implicit

我正在Visual Studio 2019中开发一个ASP.NET应用程序。我遇到了一个C#以前从未遇到过的问题。我似乎无法声明UInt64以外的任何整数类型

尝试声明Int64或long会给我带来错误,因为它表示我正在尝试将UInt64(或ulong)转换为这些类型之一

具体错误如下(显示的Azure租户ID是虚拟值,不要惊慌):

线路

Int64 tenantInt = 11132432026456784806;
给出以下错误

Error   CS0266  Cannot implicitly convert type 'ulong' to 'long'. An explicit conversion exists (are you missing a cast?)
Error   CS0023  Operator '-' cannot be applied to operand of type 'ulong'
然后是下面一行代码

long TenantID = -11132432026456784806;
给出以下错误

Error   CS0266  Cannot implicitly convert type 'ulong' to 'long'. An explicit conversion exists (are you missing a cast?)
Error   CS0023  Operator '-' cannot be applied to operand of type 'ulong'
下面是同样错误的图像:

我以前在C#工作时从未遇到过这种情况。通常,这些声明工作正常。Visual Studio有什么问题吗?它一直将数字读取为UInt64,尝试使用(Int64)或(long)强制转换时遇到另一个错误,即UInt64(或ulong)无法强制转换为这些类型。

您必须使用“ulong”,因为它支持18.446.744.073.709.551.615

按照参考资料:


卡尔顿是正确的。我试图分配的数字对于Int64和long来说太大了。从本质上说,我获取此API的人故意将数字设置得太大,因此该行将抛出错误,这样我就可以看到该行,并意识到需要用自己的ID替换它。

因为11132432026456784806大于long。MaxValueKalten是对的。作为一种解决方法,您可以尝试使用
decimal
ulong
是该值的最小类型。。。9A7E57F227237FA6。。。有人会回复说明这一点的规范链接。@Alexei:嗯,
11132432026456784806
可以存储在
ulong
中。但是您必须编写
UInt64
而不是
Int64
来实现这一点-然而,11132432026456784806不能存储在
长的
中。说到Azure租户ID——它们根本不是整数,而是GUID。这比您在这里尝试填充到64(或63)位整数的位数还要多。