如何将我使用的字符串数据与我的枚举
进行比较我制作了这个枚举
class NotificationChannel < ApplicationCable::Channel
def subscribed
stream_from notification_stream
end
def receive(data)
ActionCable.server.broadcast notification_stream, data.fetch('message')
end
private
def notification_stream
"#{params['namespace']}_stream"
end
end
我将创建一个像这样的字符串数组
public enum BeadColor
{
BLUE,
RED,
GREEN,
NONE,
}
public BeadColor previousColor = BeadColor.NONE;
对枚举进行此操作
string str = {"P", "B", "T"};
所以,如果可以,我想使用public enum BeadColor
{
BLUE = "P",
RED = "B",
GREEN = "T",
NONE,
}
检查我的字符串enum
导致而不是采取正常的方式
BigRoadData.Contains(/*the enum BLUE for example*/)
我想这样做&#34;如果可能的话&#34;像这样
if(BigRoadData.Contains(str[0])){
//print a
}
CustomClass.cs
if(BigRoadData.Contains(/*the enum blue for example*/)){
//print a
}
MainClass
我将在此称之为
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(....)){
}
}
在我的 CustomClass.cs
上CustomClass.ScoreBoardCondition();
答案 0 :(得分:2)
有很多方法可以做到这一点。
1 。您可以使用Enum
将Dictionary
映射到字符串数组中的数据,然后使用Dictionary.ContainsKey(YourEnum.Value)
。
2 。您将枚举变量的名称与字符串数组中的值的名称相同,然后使用Enum.Parse
进行此转换并进行比较。
3 。您可以为隐藏Contains
的{{1}}类制作string
扩展方法。此功能将BigRoadData.Contains(str[0])
枚举作为参数,允许您与其进行比较,而不是BeadColor
。
我将提供最后一种方法的示例。如果你想改用它们,你可以自己实现其他的。
枚举:
str[0]
扩展方法:
public enum BeadColor
{
BLUE, //P
RED, //B
GREEN, //T
NONE,
}
扩展方法将“P”映射到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;
}
}
,将“B”映射到BeadColor.BLUE
,将“T”映射到BeadColor.RED
,并且可以使用{{检查颜色是否存在1}}枚举。
<强>用法强>:
适用于字符串
BeadColor.GREEN
答案 1 :(得分:1)
您无法使用BeadColor
作为public string BigRoadData = "";
void Start()
{
if (BigRoadData.Contains(BeadColor.BLUE))
{
}
}
的类型
您可以尝试string
,但不建议使用
请参阅此问题和答案:https://stackoverflow.com/q/8588384/2025364
顺便说一句,连接这样的字符串非常糟糕:
enum
请改用char
(或BigRoadData += strData [i];
)。