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 语句有什么区别 都是为了同样的目的 这样做的各有什么好处??
再现等

解决方案 »

  1.   

    楼主,照你说的,还有一个ref参数呢。。
    C#中的out和ref参数用于让传递到方法的参数中带回返回值。
    也就是说上面两个是返回参数,你可以用返回的参数。。如果你需要让方法返回多于一个返回值的情况下,这俩个参数很有用。而return只是在调用函数的时候返回。当然你可以说,我用return也可以返回数组,记录集。但我上面也可以说是返回多个不同类型的。。本人是这样理解的。希望不会误导楼主和CSDN的兄弟。。
      

  2.   

    用return只能返加一个函数值,而out可以返回多个值(参数值)
      

  3.   

    out和ref可以同时多个,out是形参,ref是实参(直接改变值)
    return 同out但是只能一个
      

  4.   

    方法参数上的 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
      

  5.   

    return 语句终止它出现在其中的方法的执行并将控制返回给调用方法。它还可以返回可选 expression 的值。如果方法为 void 类型,则可以省略 return 语句。此语句的形式如下:示例
    在下例中,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
      

  6.   

    用return只能返加一个函数值,而out可以返回多个值(参数值)