【发布时间】:2014-05-05 19:32:06
【问题描述】:
在下一种情况下声明新变量是否有任何性能成本:
这是一个例子,只是为了说明这一点。
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
我还有下一个方法:
选项 1:
public void MyMethod(Person person)
{
if (person.FirstName.Contains("Ro") || (person.LastName.StartsWith("A") && person.Age > 20))
{
//Do something
}
else if (person.FirstName.Contains("Ko") || (person.LastName.StartsWith("B") && person.Age >= 40))
{
//Do something
}
else if (person.FirstName.Contains("Mo") || (person.LastName.StartsWith("C") && person.Age > 60))
{
//Do something
}
else
{
//Do something
}
}
选项 2:
public void MyMethod(Person person)
{
string firstName = person.FirstName;
string lastName = person.LastName;
int age = person.Age;
if (firstName.Contains("Ro") || (lastName.StartsWith("A") && age > 20))
{
//Do something
}
else if (firstName.Contains("Ko") || (lastName.StartsWith("B") && age >= 40))
{
//Do something
}
else if (firstName.Contains("Mo") || (lastName.StartsWith("C") && age > 60))
{
//Do something
}
else
{
//Do something
}
}
同样,这只是一个例子来展示问题的想法。
问题:选项 1 和选项 2 之间是否存在性能或内存问题?
当然,选项 2 看起来更好,更易读。
【问题讨论】:
-
当然,但它是微不足道的。我总是会选择可读性而不是微优化。
标签: c# performance