【问题标题】:Does Ref keyword useful for DataTableRef 关键字对 DataTable 有用吗
【发布时间】:2016-09-19 02:14:33
【问题描述】:

我读到 DataTable 属于 Reference 类型,那么使用 ref 关键字有什么不同吗?以下两种方法在性能方面是否相同?

(1)

public int CalculateValues(DataTable dt)
{
    int output = 0;
    foreach(DataRow row in dt.Rows)
    {
          //CalculateValues
    }
    return output;
}

(2)

public int CalculateValues(ref DataTable dt)
{
    int output = 0;
    foreach(DataRow row in dt.Rows)
    {
          //CalculateValues
    }
    return output;
}

(1) vs (2) ?

【问题讨论】:

    标签: asp.net datatable pass-by-reference reference-type


    【解决方案1】:

    当你将值类型传递给方法时,它会复制你的变量,但是当你传递引用类型时,它会复制指针值。 这是一个例子。

    public void Change(ReferenceType val)
    {
        val = new ReferenceType();
    }
    
    public void ChangeRef(ref ReferenceType val)
    {
        val = new ReferenceType();
    }
    
    void SomeFunction() 
    {
        var variable = new ReferenceType();
        var tmp = variable;
        Change(variable); // variable not changed
        Console.WriteLine(variable == tmp); // will print TRUE
    
        ChangeRef(ref variable); // variable changed
        Console.WriteLine(variable == tmp); // will print FALSE
    }
    

    所以,这根本与性能无关。

    【讨论】:

      猜你喜欢
      • 2011-02-17
      • 2010-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多