【问题标题】:Static pre-defined instances of a class类的静态预定义实例
【发布时间】:2018-01-08 22:19:29
【问题描述】:

我希望不要重复,但我没有找到我要搜索的内容。

我正在开发一个带有个人区域的 Asp.Net MVC 网站,您可以在其中购买应用程序的订阅。我有3个订阅计划,它们都是同一类的对象。

我正在考虑是否可以将这 3 个对象创建为具有不同值的常量并将它们放入静态类中。 最好的方法是什么?

我想用Subscriptions.ONE_MONTHSubscriptions.SIX_MONTHS 之类的内容检索订阅对象。

【问题讨论】:

  • 你基本上只是描述了怎么做,有什么问题?你试过什么?
  • 那么您是否创建了一个具有三个常量的静态类?它奏效了吗?您也可以考虑使用enum
  • 如果您需要任何帮助,您必须让我们知道您实际需要什么帮助。
  • 不知道我解释的对不对。我有一个 Subscription 类,我需要有 3 个具有不同值的此类实例,但无需创建一个空实例并设置每个字段,只有具有预定义值的此类的三个实例..
  • 是否要创建订阅类的其他实例?还是只有您定义的 3 种类型?

标签: c# object static constants instance


【解决方案1】:

理想的方法是将三个计划作为静态类的public static getter-only 属性。您可以内联或在类的静态构造函数中创建实例。

public static PlanA { get; } = new Plan(...);

【讨论】:

    【解决方案2】:

    有几种可能的方法可以做到这一点。您可以创建具有公共字段或属性的静态类:

    public static class Subscriptions
    {
        public static whateverType OPTION_1 = whateverValue;
        public static whateverType OPTION_2 = whateverValue;
        public static whateverType OPTION_3 = whateverValue;
    }
    
    public static class Subscriptions
    {
        public static whateverType OPTION_1 => whateverValue;
        public static whateverType OPTION_2 => whateverValue;
        public static whateverType OPTION_3 => whateverValue;
    }
    

    或者如果值是基本类型的枚举:

    public enum Subscriptions
    {
       Option_1,
       Option_2,
       Option_3 
    }
    

    如果你想使用一个可能有多个值的枚举,你可以使用 Flags 属性:

    [Flags]
    public enum Subscriptions
    {
       Option_1 = 1,
       Option_2 = 2,
       Option_3 = 4
    }
    

    您可能应该避免的一件事是在非静态类中使用公共常量值(原因参见this question):

    public class Subscriptions
    {
        public const whateverType OPTION_1 = whateverValue;
        public const whateverType OPTION_2 = whateverValue;
        public const whateverType OPTION_3 = whateverValue;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-02
      • 2013-05-15
      • 1970-01-01
      相关资源
      最近更新 更多