在辅助类和非静态中使用静态方法

时间:2017-02-05 14:18:09

标签: c# oop static-methods

我有一个辅助类,它接受一些对象,处理它并返回另一个类的一些实例,甚至返回对象的List。 什么是最好的方法:使这个辅助方法静态或非静态? 问题是我的应用程序可以创建大量的Car对象,并且我在考虑当每个对象都使用静态助手时是否会产生负面影响?

3 个答案:

答案 0 :(得分:1)

大多数帮助程序或实用程序类都使用静态方法。如果要创建辅助类的多个实例,则应该只使用非静态方法,但是因为您只需要一个简单的输入 - >功能 - >输出,我会使方法静态。

答案 1 :(得分:1)

可能这可以解决,而无需在需要的地方决定辅助对象的生命周期。

您应该尝试利用依赖注入方法:

public class X
{
   public X(IHelper helper)
   {
        Helper = helper;
   }

   private IHelper Helper { get; }

   public void DoStuff() 
   {
        var result = Helper.DoOtherStuff(input);
   }
}

也就是说,X不知道Helper是否始终是同一个实例,或者它是否是一个瞬态对象。这使代码更干净,更适合测试,因为您可以使用假IHelper实现来模拟帮助程序,以确保您只是测试X

答案 2 :(得分:0)

使用带有静态方法的静态类,没有实例,没有派生,只有类中的静态方法。

public static class HelperClass
{
   public static void HelperMethod()
   {
       // do something
   } 
}