C# 如何创建运算符枚举><<;=&燃气轮机=
我只是想创建这样的操作符枚举,但这会产生错误C# 如何创建运算符枚举><<;=&燃气轮机=,c#,.net,parsing,enums,C#,.net,Parsing,Enums,我只是想创建这样的操作符枚举,但这会产生错误 Public enum MyOperators {"<", "<=", ">", ">="} 公共枚举MyOperators{“=”} 根据我的建议,我试过这样的方法 Public enum MyOperators { Less ='<', LessOrEqual = '<=', Greater = '>', GreaterOrEqual = '>=' } 公共枚举运算符{
Public enum MyOperators {"<", "<=", ">", ">="}
公共枚举MyOperators{“=”}
根据我的建议,我试过这样的方法
Public enum MyOperators {
Less ='<',
LessOrEqual = '<=',
Greater = '>',
GreaterOrEqual = '>='
}
公共枚举运算符{
减='='
}
现在它不喜欢LessOrEqual和GreaterOrEqual中的“=”符号
你可以在c#运算符的MS引用中看到MS是如何处理它的。
我也可以,但我只是想看看是否有更好的建议
编辑
如果你能在没有列表和切换语句的情况下完成这项工作,你会回答我的问题
enum MyOperators {"<", "<=", ">", ">="}
string s = Console.ReadLine();
MyOperators op;
if (Enum.TryParse(s, true, out op)) {
//user entered operator
}
else {
//not operator
}
enum MyOperators{“=”}
字符串s=Console.ReadLine();
肌操作员op;
if(枚举TryParse(s,true,out op)){
//用户输入的操作员
}
否则{
//非操作员
}
枚举值的类型通常为int
。因此,您不能指定类型为string
或char
的对象。您可能会误解枚举的概念以及何时使用它
如前所述:“……枚举类型可以声明为从byte
到ulong
的任何本机整数类型,以及介于两者之间的所有内容。[……]这不包括char
[…]char
可以隐式转换为int
,因此您可以将整数枚举分配给字符文字。”
您似乎在查找常量列表。由于我不知道您想对“枚举”执行什么操作,请尝试以下操作:
public static class MyOperators
{
public const string Less = "<";
public const string LessOrEqual = "<=";
public const string Greater = ">";
public const string GreaterOrEqual = ">=";
}
公共静态类MyOperator
{
public const string Less=“=”;
}
枚举值的类型通常为int
。因此,您不能指定类型为string
或char
的对象。您可能会误解枚举的概念以及何时使用它
如前所述:“……枚举类型可以声明为从byte
到ulong
的任何本机整数类型,以及介于两者之间的所有内容。[……]这不包括char
[…]char
可以隐式转换为int
,因此您可以将整数枚举分配给字符文字。”
您似乎在查找常量列表。由于我不知道您想对“枚举”执行什么操作,请尝试以下操作:
public static class MyOperators
{
public const string Less = "<";
public const string LessOrEqual = "<=";
public const string Greater = ">";
public const string GreaterOrEqual = ">=";
}
公共静态类MyOperator
{
public const string Less=“=”;
}
根据您的编辑,您可以通过列表轻松提供该功能,因此我不确定您为什么不想要一个列表。例如,您可以执行以下操作:
var operators = new List<string>() { "<", "<=", ">", ">=" };
string s = Console.ReadLine();
if (operators.Contains(s))
{
//user entered operator
}
else
{
//not operator
}
var operators=newlist(){“=”};
字符串s=Console.ReadLine();
if(运算符包含)
{
//用户输入的操作员
}
其他的
{
//非操作员
}
如果你愿意的话,你甚至可以用列表代替数组。根据你的编辑,你可以很容易地用列表提供该功能,所以我不确定你为什么不想要一个。例如,您可以执行以下操作:
var operators = new List<string>() { "<", "<=", ">", ">=" };
string s = Console.ReadLine();
if (operators.Contains(s))
{
//user entered operator
}
else
{
//not operator
}
var operators=newlist(){“=”};
字符串s=Console.ReadLine();
if(运算符包含)
{
//用户输入的操作员
}
其他的
{
//非操作员
}
如果你愿意的话,你甚至可以用列表代替数组。单引号是字符串的双引号。
Char
方法会有一些效果,但是你不能这样做。单引号是字符串的双引号。Char
方法会有一些效果,但是你不能做你的第一句话不完全准确。enum
类型可以声明为从byte
到ulong
的任何本机整数类型,以及介于两者之间的所有类型。尽管如此,这并不包括char
。(当然,char
可以隐式转换为int
,因此可以将整数枚举分配给字符文字。)不能将常量标记为静态。从定义上看,它是静态的。你的第一句话并不完全准确。enum
类型可以声明为从byte
到ulong
的任何本机整数类型,以及介于两者之间的所有类型。尽管如此,这并不包括char
。(当然,char
可以隐式转换为int
,因此可以将整数枚举分配给字符文字。)不能将常量标记为静态。根据定义,它是静态的。如果您处理的是小列表,那么这是可以接受的方法。但是,如果您有100多个运算符,那么从易于阅读、可编写文档的代码的角度来看,这种方法是不好的@QualityCatalyst的答案是更好的方法。@Davvit我不同意。如果将这些值存储为常量,并且需要查看字符串值是否等于其中一个,则必须分别将该值与每个常量进行比较。或者,您需要将它们全部排列到一个列表/数组中。QualityCatalist的方法更适合于存储值,但这更适合于比较它们,这也是OP最终要做的。如果您处理的是小列表,这是可以接受的方法。但是,如果您有100多个运算符,那么从易于阅读、可编写文档的代码的角度来看,这种方法是不好的@QualityCatalyst的答案是更好的方法。@Davvit我不同意。如果将这些值存储为常量,并且需要查看字符串值是否等于其中一个,则必须分别将该值与每个常量进行比较。或者,您需要将它们全部排列到一个列表/数组中。QualityCatalist的方法更适合于存储值,但这更适合于比较它们,这也是OP最终要做的。