2016-09-19 3 views
0

Я читал DataTable из Reference типа, то с использованием ref ключевое слово имеет значение? Существуют ли два подхода с точки зрения производительности?Имеет ли ключевое слово 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) против (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 
} 

Таким образом, дело вовсе не в производительности.

Смежные вопросы