Привет (снова с философским вопросом),
есть метод private static
, который не имеет доступа к полям экземпляра, и, насколько мои показания касаются, эти методы обеспечивают небольшое улучшение производительности .
После того, как вы пометите методы как stati c, компилятор будет отправлять не виртуальные сайты вызовов этим участникам. Создание не виртуальных сайтов вызовов предотвратит проверку во время выполнения для каждого вызова, которая гарантирует, что текущий указатель объекта не равен нулю. Это может привести к ощутимому приросту производительности для чувствительного к производительности кода. В некоторых случаях невозможность доступа к текущему экземпляру объекта представляет проблему правильности.
FxCop
Тогда зачем использовать обычный private
метод, когда мы можем разместить поле экземпляра в private static
параметрах метода? Разве это не неэффективно?
Просто чтобы представить, что я имею в виду:
public class A
{
private readonly string _key = "ssss";
public bool IsGoodKey()
{
}
private static bool ValidateKeyStatic(string key)
{
return string.IsNullOrEmpty(key);
}
private bool ValidateKey()
{
return string.IsNullOrEmpty(_key);
}
}
И теперь есть два способа реализации IsGoodKey
:
public bool IsGoodKey()
{
return ValidateKeyStatic(_key);
}
И
public bool IsGoodKey()
{
return ValidateKey();
}
Почему бы не всегда использовать private static
?