【问题标题】:C# Error - Object reference is reqiured for the non-static fieldC# 错误 - 非静态字段需要对象引用
【发布时间】:2018-03-05 21:32:07
【问题描述】:

我对 c# 很陌生,但我被卡住了。我在下面解释了我的情况。

现在我有一个这样的枚举列表,

public enum Colors
{
   Black,
   Blue,
   Red
}

我有 2 个带有 switch 语句的类(我只展示了 1 个类,因为这两个类是相似的)。现在我收到这样的错误An object reference is requesred for the non-static field, method, or property 'RandomColor.GetColors'。我也可以在我所有使用这个 switch 语句的类中使用答案版本,但是因为我想做像更改一个文件中的值,它会为我更改所有类中的值。

public class RandomColorService
{
   public readonly string _url;

   public RandomColorService()
   {
      switch (RandomColor.GetColors)
      {
        case Colors.Black:
            _url = "Use url for black color";
            break;
        case Colors.Blue:
            _url = "Use url for blue color";
            break;
        case Colors.Red:
            _url = "Use url for red color";
            break;
      }
   }
}

因此,为了实现这一点,我尝试创建此类,但现在如果我将静态放在下面的类中,一切正常,但我试图使其更加动态,以便我可以从不同的类更改 GetColors 的值到不同的颜色。这样它就可以在上面的类中使用适当的 url。

public class RandomColor //put static here
{
   public Colors GetColors { get; set; } = Colors.Black; //put static here
}

你们能帮我解决这个错误吗?

【问题讨论】:

  • 您可能需要改写这个?我不理解您的问题,也看不到您要更改属性type 的位置。 value 是的,但是......我不认为那是你要问的。
  • @zzxyz 请检查已编辑的问题。是的,我正在尝试更改 value
  • 你遇到这个问题是因为你做错了。不要尝试编写自己的日期处理库。使用内置的东西:msdn.microsoft.com/en-us/library/ms973825.aspx
  • @Jasmine 我只是举一个使用“Days”的例子。它可以是任何东西。我的问题是如何更改DayTesting 的值。
  • “我上面提到过不止一个类的 switch 语句” - 巨大的设计缺陷!当您开始不得不在多个地方重复代码时,这表明您的设计不正确。如果这个问题的全部目的是启用那个糟糕的设计选择......那么,好吧,我会按原样留下我的反对意见。

标签: c# enums


【解决方案1】:

更改属性值最直接的方法是使用 set 语句:

var myTestDays = new TestDays();
myTestDays.DayTesting = Days.Sunday;

【讨论】:

  • 因为我在不同的服务中有很多 switch 语句。这就是为什么我想在我的 TestDays 类中更改它,以便它适用于所有 switch 语句。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-03
相关资源
最近更新 更多