将字符串数组与枚举C#(单位)进行比较
如何将使用的字符串数据与枚举进行比较 我做了这个枚举将字符串数组与枚举C#(单位)进行比较,c#,unity3d,C#,Unity3d,如何将使用的字符串数据与枚举进行比较 我做了这个枚举 public enum BeadColor { BLUE, RED, GREEN, NONE, } public BeadColor previousColor = BeadColor.NONE; 我将创建一个如下的字符串数组 string str = {"P", "B", "T"}; if(BigRoadData.Contains(/*the enum blue for example*/)){
public enum BeadColor
{
BLUE,
RED,
GREEN,
NONE,
}
public BeadColor previousColor = BeadColor.NONE;
我将创建一个如下的字符串数组
string str = {"P", "B", "T"};
if(BigRoadData.Contains(/*the enum blue for example*/)){
//print a
}
CustomClass.ScoreBoardCondition();
用于对枚举执行此操作
public enum BeadColor
{
BLUE = "P",
RED = "B",
GREEN = "T",
NONE,
}
因此,如果可能的话,我想使用enum
检查我的字符串BigRoadData.Contains(/*例如enum BLUE*/)
原因而不是做正常的方式
if(BigRoadData.Contains(str[0])){
//print a
}
如果可能的话,我想这样做
string str = {"P", "B", "T"};
if(BigRoadData.Contains(/*the enum blue for example*/)){
//print a
}
CustomClass.ScoreBoardCondition();
编辑
CustomClass.cs
public string BigRoadData = "";
public string[] strData = {"P ,B ,B ,P ,B ,B ,B ,B ,B ,B ,P ,P ,B ,P "};
public void MakeBigRoad(string data){
BigRoadData = data;
for(int i = 0; i < strData.Length; i++){
BigRoadData += strData [i];
BigRoadData += ",";
}
}
public void ScoreBoardCondition(){
if(BigRoadData.Contains(....)){
}
}
public enum _Data
{
P,
B,
T,
}
public enum _BeadColors
{
BLUE,
RED,
NONE,
}
public _Data previousColor = _BeadColors.NONE;
class CustomClass{
}
//extension method for contains
public static bool Contains(this string input, _Data data){
string[] str = { "P", "B", "T" };
if(data == BaccaratScoreboard._Data.P){
return input.Contains (str [0]);
}
if(data == BaccaratScoreboard._Data.B){
return input.Contains (str [1]);
}
if(data == BaccaratScoreboard._Data.T){
return input.Contains (str [2]);
}
编辑
在我的CustomClass.cs上
public string BigRoadData = "";
public string[] strData = {"P ,B ,B ,P ,B ,B ,B ,B ,B ,B ,P ,P ,B ,P "};
public void MakeBigRoad(string data){
BigRoadData = data;
for(int i = 0; i < strData.Length; i++){
BigRoadData += strData [i];
BigRoadData += ",";
}
}
public void ScoreBoardCondition(){
if(BigRoadData.Contains(....)){
}
}
public enum _Data
{
P,
B,
T,
}
public enum _BeadColors
{
BLUE,
RED,
NONE,
}
public _Data previousColor = _BeadColors.NONE;
class CustomClass{
}
//extension method for contains
public static bool Contains(this string input, _Data data){
string[] str = { "P", "B", "T" };
if(data == BaccaratScoreboard._Data.P){
return input.Contains (str [0]);
}
if(data == BaccaratScoreboard._Data.B){
return input.Contains (str [1]);
}
if(data == BaccaratScoreboard._Data.T){
return input.Contains (str [2]);
}
有很多方法可以做到这一点 1。您可以使用
字典将Enum
映射到字符串数组中的数据,然后使用Dictionary.ContainsKey(YourEnum.Value)
2。将枚举变量的名称与字符串数组中的值的名称相同,然后使用enum.Parse
进行此转换并进行比较
3。您可以为字符串
类创建一个Contains
扩展方法,用于隐藏BigRoadData.Contains(str[0])
。此函数将采用BeadColor
枚举作为参数,并允许您与该参数进行比较,而不是str[0]
我将为最后一种方法提供一个示例。如果您希望使用其他工具,您可以自己实现它们
枚举:
public enum BeadColor
{
BLUE, //P
RED, //B
GREEN, //T
NONE,
}
扩展方法:
public static class ExensionMethod
{
public static bool Contains(this string input, BeadColor cColor)
{
string[] str = { "P", "B", "T" };
if (cColor == BeadColor.BLUE)
return input.Contains(str[0]);
if (cColor == BeadColor.RED)
return input.Contains(str[1]);
if (cColor == BeadColor.GREEN)
return input.Contains(str[2]);
return false;
}
}
扩展方法将“p”映射到BeadColor.BLUE
,“B”映射到BeadColor.RED
,“T”映射到BeadColor.GREEN
,并可以使用BeadColor
枚举检查颜色是否存在
用法:
它对字符串有效
public string BigRoadData = "";
void Start()
{
if (BigRoadData.Contains(BeadColor.BLUE))
{
}
}
有很多方法可以做到这一点
1。您可以使用字典将Enum
映射到字符串数组中的数据,然后使用Dictionary.ContainsKey(YourEnum.Value)
2。将枚举变量的名称与字符串数组中的值的名称相同,然后使用enum.Parse
进行此转换并进行比较
3。您可以为字符串
类创建一个Contains
扩展方法,用于隐藏BigRoadData.Contains(str[0])
。此函数将采用BeadColor
枚举作为参数,并允许您与该参数进行比较,而不是str[0]
我将为最后一种方法提供一个示例。如果您希望使用其他工具,您可以自己实现它们
枚举:
public enum BeadColor
{
BLUE, //P
RED, //B
GREEN, //T
NONE,
}
扩展方法:
public static class ExensionMethod
{
public static bool Contains(this string input, BeadColor cColor)
{
string[] str = { "P", "B", "T" };
if (cColor == BeadColor.BLUE)
return input.Contains(str[0]);
if (cColor == BeadColor.RED)
return input.Contains(str[1]);
if (cColor == BeadColor.GREEN)
return input.Contains(str[2]);
return false;
}
}
扩展方法将“p”映射到BeadColor.BLUE
,“B”映射到BeadColor.RED
,“T”映射到BeadColor.GREEN
,并可以使用BeadColor
枚举检查颜色是否存在
用法:
它对字符串有效
public string BigRoadData = "";
void Start()
{
if (BigRoadData.Contains(BeadColor.BLUE))
{
}
}
您不能使用字符串作为枚举的类型
您可以尝试char
,但不推荐使用。
请参见以下问题和答案:
顺便说一下,像这样连接字符串是非常糟糕的:
BigRoadData+=strData[i]代码>
改用String.Concat
(或StringBuilder
)。您不能将String
用作枚举的类型
您可以尝试char
,但不推荐使用。
请参见以下问题和答案:
顺便说一下,像这样连接字符串是非常糟糕的:
BigRoadData+=strData[i]代码>
请改用String.Concat
(或StringBuilder
)。能否显示BRData是如何声明的以及其中包含什么内容?您的代码令人困惑。哪种类型是BRData?您是否混淆了使用枚举增加的方法?请分类。@TheGinxx009是的。将你的问题编辑成可回答的,我将删除否决票。试着回答。显示了如何匹配,但需要使用枚举名称来匹配字符串。例如,您不能将B解析为蓝色。@johnnice。这真的很有帮助。你能展示一下BRData是如何声明的吗?你的代码很混乱。哪种类型是BRData?您是否混淆了使用枚举增加的方法?请分类。@TheGinxx009是的。将你的问题编辑成可回答的,我将删除否决票。试着回答。显示了如何匹配,但需要使用枚举名称来匹配字符串。例如,您不能将B解析为蓝色。@johnnice。这真的很有帮助。嘿,先生,`意外的符号bool',预期为
class',delegate',
enum',interface',
partial',或struct'
我刚刚测试出来,我以为它可以工作,但它不能。请在你的问题中添加编辑,然后按原样添加新代码。不要在任何地方修改它。嘿,先生`意外符号bool',预期为
class'、delegate'、
enum'、interface'、
partial'或struct'
我刚刚测试出来,我认为它可以工作,但它不能。请在你的问题中添加编辑,然后是你的新代码。不要在任何地方修改它。