我读的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)?
答案 0 :(得分: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
}
所以,它根本不是关于性能的。