2017-11-17 5 views
0

Kann jemand explizit Int in SqlInt32 konvertieren? Der Compiler gibt den Konvertierungsfehler aus.Explizite Konvertierung Int in SqlInt32

using System; 
using System.Diagnostics; 
using System.Collections; 
using System.Collections.Generic; 
using System.Data.SqlTypes; 
using Microsoft.SqlServer.Server; 

public partial class UserDefinedFunctions 
{ 
    [SqlFunction()] 
    static public int RarFiles(SqlString TARGET, SqlString SRC, SqlString SIZE) 
    { 
     ProcessStartInfo p = new ProcessStartInfo(); 
     p.FileName = @"C:\Program Files\WinRAR\rar.exe"; 
     p.Arguments = String.Format("a -cfg- -ep1 -idcdp -m5 -r -s -v{0} {1} {2}", SIZE, TARGET, SRC); 
     Process x = Process.Start(p); 
     SqlInt32 res = x.ExitCode; 
     return res; 
    } 
} 
+1

Sind Sie sicher, dass das Problem das 'int' in' SqlInt32' konvertiert und nicht die andere Konvertierung? in der nächsten Zeile mit der Return-Anweisung? – Dirk

+0

Ich verstehe es nicht. Ihr Methodenergebnis ist 'int' und' x.ExitCode' ist 'int'. Warum also wandelst du es in 'SqlInt32' um? –

Antwort

2

Wenn Sie Ihre Methode wollen ein SqlInt32 zurückkehren, werden Sie es erklären, müssen als eine Rückkehr. Ihr aktueller Code definiert den Rückgabetyp der Methode als int

static public int RarFiles(SqlString TARGET, SqlString SRC, SqlString SIZE) 
       ^^^ 

Diese Codezeile wird gut funktionieren:

SqlInt32 res = x.ExitCode; 

Denn wie John bemerkt hat, gibt es eine implizite Konvertierung von int nach SqlInt32

Aber dann das nächste Mal: ​​

return res; 

t Will ry, um das SqlInt32 in int zu konvertieren, da die Methode ein int zurückgibt, aber in dieser Richtung ist die Konvertierung explizit (Sie müssen umwandeln) und da Sie keine explizite Konvertierung angegeben haben, erhalten Sie einen Fehler. Die Lösung, die Sie suchen, besteht wahrscheinlich nicht in der expliziten Konvertierung, sondern darin, das Problem mit dem deklarierten Rückgabetyp der Methode zu beheben.

1
public static implicit operator SqlInt32 (
    int x 
) 

Parameter

x 

Typ: System.Int32
Ein Integer-Wert.

Rückgabewert
Typ: System.Data.SqlTypes.SqlInt32

Verwandte Themen