【问题标题】:Work with enum on C#在 C# 上使用枚举
【发布时间】:2018-03-19 02:31:23
【问题描述】:

大家好,感谢您的帮助! 首先我告诉你背景。我必须在 Windows 8 通用应用程序上做一个饮料自动售货机模拟器。 我的课程是:

  1. 经理(制造机器并放入配料和饮料),

  2. VendingMachine(有配料和饮料的清单,检查是否有足够的饮料等)

  3. 具有名称和数量的成分类,

  4. 具有名称、价格等的抽象基类 Drink 和

  5. 类 Tea、Coffee 和 Chocolate 从 Drink 继承并拥有自己的成分实例列表。

现在,当我在机器中选择一种饮料时,我会从它的名称中检查每种成分,如果机器上存在同名的成分,我会检查是否还有剩余的成分,然后我会拿一个.

问题是,添加一种新类型的饮料应该很容易,但是(!)如果成分的名称不完全相同,它将不起作用。 所以我想做一个枚举,我在机器上做了这样的:

public enum IngredientsNames
{
  Coffee,
  Tea,
  Chocolate,
  Sugar,
  Milk
}

成分类是:

class Ingredient
{
    public string name { get; private set; }
    public int amount;
    public Ingredient(string _name)
    {
        name = _name;
    }
}

但问题是如果我想在自动售货机类中做:

IngredientNames.Coffee = "Coffee" ;

上面写着

“赋值的左边必须是变量、属性或索引器”

明确地说,我希望如果有人打开一种新的饮料类型,并且 Ingredient.Coffee 它会自动给他“咖啡”这个名字的字符串,他不必自己给这个名字,之后没有错误。 我希望我很清楚。感谢您的帮助,我还在这方面开始。

【问题讨论】:

  • 你能否展示Ingredient类的定义及其构造函数,将字符串“Coffee”解析为Ingredients枚举成员的逻辑将在其中。每当某些东西“不起作用”时,请包含完整的错误消息(编译器错误或运行时异常信息)。
  • 对不起,我是网站的新手,我根据您的要求在帖子中做了一些编辑
  • 检查这是否是你想要做的?给出枚举名称和描述。 stackoverflow.com/a/46424653/7974050
  • 它对我不起作用,我想给用户添加一种新类型的饮料,一个小清单,他可以选择他想要的成分并返回对应的字符串

标签: c# windows class enums universal


【解决方案1】:

您可以像这样将字符串值转换为枚举。

Ingredients ingredient = (Ingredients)Enum.Parse(typeof(Ingredients), "Coffee"); 

你也可以像这样检查 Enum 中是否存在。

Enum.IsDefined(typeof(Ingredients), "Coffee") 

【讨论】:

  • 这会给枚举 Coffee 一个字符串,我希望如果有人添加一种新类型的饮料,他可以直接做 components.add(Machine.Ingredient.Coffe) ,当第一个“成分“它是 Drinks 基类上的成分实例列表,在 () 之后是枚举,它自动添加了一个名为“Coffe”的类成分实例。我不知道我是否清楚。 .
  • 如果你希望你只创建你的类,并且 Enum 应该自动包含它,那不会自行发生。枚举的值应该在编译时知道。但是,请检查这个答案,它允许复制这种动态枚举的场景。 stackoverflow.com/questions/725043/dynamic-enum-in-c-sharp
  • 要获取一个命名空间中所有类的名称到字典中,可以查看stackoverflow.com/questions/79693/…
  • 枚举不会改变它不是动态的,有一个我自己放的成分列表。我可以将枚举放在成分类中,我只希望枚举中的每个选择都给出成分的实例。让我们说,如果他做 Ingredient.Coffee 就像做 Ingredient coffee = new ingredients("Coffee") 一样,用户只是不自己做,他不放他想要的。已知成分的可能性列表
  • 我想知道如何将字符串或对象实例之类的值赋予枚举中的选择,如果我有枚举 {choice1、choice2、choice3} choice1 是一个特定的对象,choice2 是另一个对象,等等等等,我不知道该怎么做
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-12
  • 2010-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多