2016-07-29 16 views
-3

Dies ist mein C# -Code: Wie kann ich diesen Fehler beheben?Fehler CS0266 Typ 'long' kann nicht implizit in 'int' konvertiert werden. Es gibt eine explizite Konvertierung (fehlt Ihnen ein Cast?)

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

Die Fehlermeldung mir klar zu sein scheint. Ohne eine gute [mcve] ist es unmöglich, genau zu wissen, was Sie tun, aber es scheint, dass die Methode 'Connect()' einen Wert vom Typ 'long' zurückgibt und Sie versuchen, ihn in einer Variablen vom Typ zu speichern "int". Wenn Sie sicher wissen, dass der Wert in ein "int" passt, können Sie einfach casten. Andernfalls müssen Sie die Variable als 'long' deklarieren. –

+0

Die connect-Methode gibt wahrscheinlich den langen Wert zurück, aber Sie versuchen, ihn in int zu setzen, indem Sie den Typ von int in long umwandeln, um den Fehler zu beheben. – Adil

+0

Mögliches Duplikat von https://stackoverflow.com/questions/30579114/cannot-implicitly-convert-type-long-to-int –

Antwort

3

Nach der Fehlermeldung Sie erhalten, müssen Sie nur den Typ der Variablen MyKADSts genannt ändern.

long MyKADSts = 0; 

Sein Typ soll eine 64-Bit-Ganzzahl (long) und nicht eine 32-Bit-Ganzzahl (int) sein. Anscheinend können Sie einer 32-Bit-Ganzzahl keine 64-Bit-Ganzzahl zuweisen.

+0

-> 'kann einer 32-Bit-Integer-Variablen ' – mmcrae

+0

keinen 64-Bit-Integer-Wert zuweisen @mmcrae schimpfst du mit diesem Satz? Ist es etwas falsch? Vielen Dank im Voraus für Ihre Antwort. – Christos

1

Es scheint, dass MyKad.Connect() wie folgt definiert ist:

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

Sie können nicht implizit den long Wert durch dieses Verfahren zu einer ganzen Zahl lokale Variable MyKADSts zurück zuweisen. Dies liegt daran, dass long (Int64) Zahlen enthalten kann, die nicht in int (Int32) passen.

So müssen Sie den Code wie folgt ändern:

long MyKADSts = MyKad.Connect(); 

Wenn Sie wirklich einen triftigen Grund für MyKADSts haben eine int zu sein, müssen Sie den Wert als die Fehlerzustände explizit konvertieren:

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

Ich habe den gleichen Fehler, wenn ich versuchte, eine ContactNo (als Bigint in SQL deklariert) mit der Nummer 9874561230 in C# mit LINQ zuzuweisen.

Ich reparierte den folgenden Code verwendet:

dynamic mobile = 9874561230; 
newEmployee.ContactNo = (int)mobile; 
Verwandte Themen