2017-11-17 15 views
0

誰かが明示的にintをSqlInt32に変換する方法を知っていますか?コンパイラは変換エラーをスローします。SqlInt32への明示的変換int

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

問題が 'int'を' SqlInt32'に変換していて、 return文で次の行に? – Dirk

+0

私はそれを取得しません。 メソッドの結果は 'int'で、' x.ExitCode'は 'int'です。なぜ最初に 'SqlInt32'に変換するのですか? –

答えて

2

あなたのメソッドがたSqlInt32を返すようにしたい場合は、あなたが1を返すように宣言する必要があります。あなたの現在のコードは

このコード行が正常に動作しますint

static public int RarFiles(SqlString TARGET, SqlString SRC, SqlString SIZE) 
       ^^^ 
としてメソッドの戻り値の型を定義しています

SqlInt32 res = x.ExitCode; 

ジョンが指摘したように、たSqlInt32

にint型からの暗黙的な変換がありますので

しかし、その後、次の時間:

return res; 

ウィルトンメソッドがintを返すので、SqlInt32をintに変換しますが、その方向では変換は明示的です(キャストする必要があります)。明示的な変換を指定しないと、エラーが発生します。あなたが求める解決策は、おそらく明示的な変換を行うのではなく、宣言された戻り値の型の問題を修正することです。

1
public static implicit operator SqlInt32 (
    int x 
) 

パラメータ

x 

タイプ:可能System.Int32
整数値。

戻り値
タイプ:System.Data.SqlTypes.SqlInt32

関連する問題