2016-07-29 181 views
-3

这是我的C#代码:如何纠正此错误。错误CS0266不能将类型'long'隐式转换为'int'。存在明确的转换(您是否缺少演员?)

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; 


    } 
+0

错误信息似乎很清楚给我。如果没有一个好的[mcve],就不可能知道你在做什么,但是看起来'Connect()'方法返回一个类型为'long'的值,并且你试图将它存储在一个类型的变量中'int'。如果你确定知道该值将适合'int',则可以投射。否则,您需要将该变量声明为“long”。 –

+0

连接方法可能会返回长整型值,但您试图将其置于整型,将整型转换为长整型将修复错误。 – Adil

+0

可能的重复https://stackoverflow.com/questions/30579114/cannot-implicitly-convert-type-long-to-int –

回答

3

根据你得到的错误信息,你只有改变称为MyKADSts变量的类型。

long MyKADSts = 0; 

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

+0

- >'不能分配一个64位整数值到一个32位整数变量' – mmcrae

+0

@mmcrae你不同意这句话吗?有什么问题吗?预先感谢您的回复。 – Christos

1

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

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

您不能隐式分配由该方法返回一个整数局部变量MyKADStslong值。这是因为longInt64)可以容纳的数字不能放在intInt32)内。

所以,你需要改变你的代码如下:

long MyKADSts = MyKad.Connect(); 

如果你真的有MyKADSts正当理由是int,您需要将值显式转换为错误状态:

long MyKADSts = (int)MyKad.Connect(); 
0

我得到了同样的错误,当我试图在C#中使用LINQ分配一个ContactNo(在SQL中声明为Bigint)号码为9874561230。

我固定它使用下面的代码:

dynamic mobile = 9874561230; 
newEmployee.ContactNo = (int)mobile; 
相关问题