Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何创建运算符枚举><<;=&燃气轮机=_C#_.net_Parsing_Enums - Fatal编程技术网

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最终要做的。