Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.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#_Unity3d - Fatal编程技术网

将字符串数组与枚举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'
我刚刚测试出来,我认为它可以工作,但它不能。请在你的问题中添加编辑,然后是你的新代码。不要在任何地方修改它。