显式转换 int 到 SqlInt32

Explicit conversion int to SqlInt32

有人知道如何将 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;
   }
}
public static implicit operator SqlInt32 (
    int x
)

参数

x

类型:System.Int32
整数值。

Return价值
类型:System.Data.SqlTypes.SqlInt32

如果您希望您的方法 return 一个 SqlInt32,您需要将其声明为 returning 一个。您当前的代码将方法的 return 类型定义为 int

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

这行代码可以正常工作:

SqlInt32 res = x.ExitCode;

因为正如 John 所指出的,存在从 int 到 SqlInt32 的隐式转换

但下一次:

return res;

将尝试将 SqlInt32 转换为 int,因为方法 return 是一个 int,但在那个方向上,转换是显式的(您必须强制转换)并且您没有提供显式的转换,你会得到一个错误。您寻求的解决方案可能不是进行显式转换,而是解决方法声明的 return 类型的问题