public void RunProc(string procName, SqlParameter[] prams, out SqlDataReader dataReader)
{
SqlCommand cmd = CreateCommand(procName, prams);
dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
} /// <summary>
/// 获得DataSet对象
/// </summary>
/// <param name="str_Sql">SQL语句</param>
/// <returns></returns>
public DataSet GetDs(string str_Sql)
{
Open();
SqlDataAdapter Ada = new SqlDataAdapter(str_Sql,cn);
DataSet ds = new DataSet();
Ada.Fill(ds);
cn.Close();
return ds;
}这里用 out 和 return 语句有什么区别 都是为了同样的目的 这样做的各有什么好处??
再现等
{
SqlCommand cmd = CreateCommand(procName, prams);
dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
} /// <summary>
/// 获得DataSet对象
/// </summary>
/// <param name="str_Sql">SQL语句</param>
/// <returns></returns>
public DataSet GetDs(string str_Sql)
{
Open();
SqlDataAdapter Ada = new SqlDataAdapter(str_Sql,cn);
DataSet ds = new DataSet();
Ada.Fill(ds);
cn.Close();
return ds;
}这里用 out 和 return 语句有什么区别 都是为了同样的目的 这样做的各有什么好处??
再现等
C#中的out和ref参数用于让传递到方法的参数中带回返回值。
也就是说上面两个是返回参数,你可以用返回的参数。。如果你需要让方法返回多于一个返回值的情况下,这俩个参数很有用。而return只是在调用函数的时候返回。当然你可以说,我用return也可以返回数组,记录集。但我上面也可以说是返回多个不同类型的。。本人是这样理解的。希望不会误导楼主和CSDN的兄弟。。
return 同out但是只能一个
当希望方法返回多个值时,声明 out 方法非常有用。使用 out 参数的方法仍然可以返回一个值。一个方法可以有一个以上的 out 参数。
若要使用 out 参数,必须将参数作为 out 参数显式传递到方法。out 参数的值不会传递到 out 参数。
不必初始化作为 out 参数传递的变量。然而,必须在方法返回之前为 out 参数赋值。
属性不是变量,不能作为 out 参数传递。
如果两个方法的声明仅在 out 的使用方面不同,则会发生重载。不过,无法定义仅在 ref 和 out 方面不同的重载。例如,以下重载声明是有效的:
class MyClass
{
public void MyMethod(int i) {i = 10;}
public void MyMethod(out int i) {i = 10;}
}
而以下重载声明是无效的:
class MyClass
{
public void MyMethod(out int i) {i = 10;}
public void MyMethod(ref int i) {i = 10;}
}示例
// cs_out.cs
using System;
public class MyClass
{
public static int TestOut(out char i)
{
i = 'b';
return -1;
} public static void Main()
{
char i; // variable need not be initialized
Console.WriteLine(TestOut(out i));
Console.WriteLine(i);
}
}
输出
-1
b
在下例中,A() 方法以 double 值的形式返回 Area 变量。// statements_return.cs
using System;
class ReturnTest
{
static double CalculateArea(int r)
{
double area;
area = r*r*Math.PI;
return area;
} public static void Main()
{
int radius = 5;
Console.WriteLine("The area is {0:0.00}", CalculateArea(radius));
}
}
输出
The area is 78.54