有谁知道如何将int显式转换为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;
}
}
答案 0 :(得分:2)
如果您希望您的方法返回SqlInt32,则需要将其声明为返回一个。您当前的代码将方法的返回类型定义为int
static public int RarFiles(SqlString TARGET, SqlString SRC, SqlString SIZE)
^^^
这行代码可以正常工作:
SqlInt32 res = x.ExitCode;
因为正如John所指出的那样,从int到SqlInt32的隐式转换
但接下来的时间:
return res;
将尝试将SqlInt32转换为int,因为该方法返回一个int,但在该方向上,转换是显式的(您必须转换)并且由于您没有提供显式转换,您将得到一个错误。您寻求的解决方案可能不是进行显式转换,而是使用声明的方法返回类型修复问题
答案 1 :(得分:1)
public static implicit operator SqlInt32 (
int x
)
参数
x
类型:System.Int32
整数值。
返回值
键入:System.Data.SqlTypes.SqlInt32