我想知道调用短方法的开销是什么,或者代码是否会以任何方式进行优化,如果它与getter的成本不同?
我只是举个例子,因为很难解释。
我有一个ClaimsManager用于获取特定声明并返回它们的网站。从另一个获得一个声明的过程只有一个ClaimsType字符串。
public string GetClaimValueByType(string ClaimType)
{
return (from claim in _claimsIdentity.Claims
where claim.ClaimType == ClaimType
select claim.Value).SingleOrDefault();
}
/*Again would this be better or worse if I wanted to be able to choose if
I want the claim versus the value?
public Claim GetClaimByType(string ClaimType)
{
return (from claim in _claimsIdentity.Claims
where claim.ClaimType == ClaimType
select claim).SingleOrDefault();
}
public string GetClaimValueByType(string ClaimType)
{
return GetClaimByType(ClaimType).Value;
}
*/
public string GetEmail()
{
return GetClaimValueByType(ClaimTypes.Email);
}
/* Or should I use getters?...
public string Email
{
get
{
return return GetClaimValueByType(ClaimTypes.Email);
}
}
*/
使用这些简短的get方法是不是很糟糕?是否应该有大量的呼叫开销,因为它太短或者会优化吗?最后,在这里实际使用吸气剂更有意义吗?..
由于
答案 0 :(得分:5)
在我看来,使用setter和getter可能带来的边际开销远远超过了干净且易于维护的代码,这些代码很可能对于街上的任何.NET开发人员来说都更容易选择和运行。
但我想这也取决于你的Claim对象有多大。 :)
答案 1 :(得分:2)
性能方面,getter和方法之间没有区别。 getter只是语法糖,在编译期间转换为方法。关于何时使用getter以及何时使用方法,有一些一般性的指导原则。 This msdn page建议在以下情况下使用方法而不是属性:
答案 2 :(得分:-2)
我不会为此使用getter,属性旨在返回常量值。这意味着有序调用应该返回相同的值。这只是一个概念性的事情。