2016-09-19 41 views
0

我读的DataTable是Reference类型,那么使用ref关键字有什么区别?在性能方面两种方法相同?Does Ref关键字对于DataTable有用

(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)

回答

0

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

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 
} 

所以,这根本不是性能问题。