显式转换 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 类型的问题
有人知道如何将 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 类型的问题