ASP.NET MVC 中静态或非静态方法之间的差异



我需要一种方法在控制器中返回一些参数,这是它的实现:

    public List<Parameter> GetParameters(FormCollection collection) {
        List<Parameter> parameters = new List<Parameter>();
        List<string> parameterNames = new List<string>();
        //Get Parameters Names and Values
        return parameters;
    }

我在所有控制器中使用此方法,因此我认为必须定义它的 3 个选项:

1-对于任何控制器类,在该控制器中定义它,如下所示:

public class ProductController : Controller {
   public List<Parameter> GetParameters(FormCollection collection) {
   //
    }
  }

2-在静态类中将其定义为静态方法:

public static class GeneralMethods {
   public static List<Parameter> GetParameters(FormCollection collection) {
   //
    }
  }

3-将其定义为无静态:

public class GeneralMethods {
   public List<Parameter> GetParameters(FormCollection collection) {
   //
    }
  }
哪一个

更好?哪一个性能更好?或者用于定义许多控制器中使用的方法的任何其他选项?你的建议是什么?

这三者中的任何一个都不会对性能产生影响。(虽然最后一种方法每次都会创建单独的对象,但它将由 GC 优雅地处理)。

方法1:不,作为标准做法,我们不应该复制代码。

方法 2:是,如果您的方法仅依赖于输入参数。

方法

3:是的,如果您需要设置某个实例变量并且您的方法依赖于它们。

建议的方法:(方法1+方法3)如果此方法对所有控制器(或大多数)都是通用的,请使用此方法声明一个基本控制器,并从中继承所有其他控制器。

静态方法不会成为问题,因为在方法中声明的任何变量都在方法的范围内。

最新更新