错误 CS0266 无法将类型“long”隐式转换为“int”.存在显式转换(您是否缺少强制转换?

本文关键字:转换 是否 显式转换 存在 int long 类型 CS0266 错误 | 更新日期: 2023-09-27 17:59:07

这是我的C#代码:如何纠正此错误。

    private MyFinger.MyKAD MyKad = new MyFinger.MyKAD();
    void Button1_Click(object sender, EventArgs e)
    {
       int MyKADSts = 0;
    MyKADSts = MyKad.Connect();
    //ShowMsg("MyKad.Connect_MyKad():" + MyKADSts);
    //Button3.Enabled = false;
    //Button4.Enabled = false;

    }

错误 CS0266 无法将类型“long”隐式转换为“int”.存在显式转换(您是否缺少强制转换?

根据您收到的错误消息,您只需更改名为 MyKADSts 的变量的类型。

long MyKADSts = 0;

它的类型应该是64位整数(long(而不是32位整数(int(。显然,您不能将 64 位整数分配给 32 位整数。

似乎MyKad.Connect()定义如下:

public long Connect() 
{
  // ...
}

不能将该方法返回的long值隐式分配给整数局部变量MyKADSts。这是因为long(Int64(可以容纳数字,而不是不能容纳在int(Int32(中的数字。

因此,您需要按如下方式更改代码:

long MyKADSts = MyKad.Connect();

如果您确实有正当理由将MyKADSts int ,则需要按照错误状态显式转换该值:

long MyKADSts = (int)MyKad.Connect();
当我

尝试使用 LINQ 在 C# 中分配一个 ContactNo(在 SQL 中声明为 Bigint(9874561230时,我遇到了同样的错误。

我使用以下代码修复了它:

dynamic mobile = 9874561230;
newEmployee.ContactNo = (int)mobile;
相关文章: