C#数组问题;无法将数组索引保存到变量

时间:2016-09-01 02:53:34

标签: c# arrays

所以我在这里有这个代码,它应该检测是否有人是男性还是女性。基本上,我们有一个软件可以将我们连接到手机上的不同人,并且他们的名字随时可用。这应该(理论上)做的是检测数组中人的姓名和性别,并将其输入到我们的表单中。我在这里包含了一些代码示例,特别是那些不起作用的部分,我想知道你们是否有任何线索为什么会这样。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace GenderChecker
{
class Class
{

    public static void Check(string stringy)
    {
        int gender = 0;
        string[] arrayexample = { "Example One Male", "Example Two Female" };
        if (arrayexample.Contains(stringy))
        {
            int arrayPosition = arrayexample.IndexOf(arrayexample, stringy); //part that doesn't work
        }
    }

    static void Main(string[] args)
    {
        genderChecker("Example One");
    }
}
}

任何人都可以告诉我一种不同的方法将数组位置保存为整数,因为这段代码根本不起作用而且有点令人生气。

谢谢你, MTS

5 个答案:

答案 0 :(得分:4)

IndexOf()是Array类的静态方法。

改为:

arrayPosition = Array.IndexOf(arrayexample, stringy);

如果字符串不在数组中,则返回-1

答案 1 :(得分:1)

您的代码将循环两次;你最好不要使用for循环吗?

public static void Check(string stringy)
{
    int gender = 0;
    string[] arrayexample = { "Example One Male", "Example Two Female" };
    var arrayPosition = -1;
    for (var i = 0; i < arrayexample.Length; i++)
    {
        if (arrayexample[i] == stringy)
        {
        arrayPosition = i;
        break;
        }
    }
}

答案 2 :(得分:0)

public static void Check(string stringy)
    {
        int gender = 0;
        string[] arrayexample = { "Example One Male", "Example Two Female" };
        for(int I=0;i<arrayexample.Length;i++)
        {
          if (arrayexample[i].Contains(stringy))
          {
            int arrayPosition = i; //part that doesn't work
          }
        }
    }

答案 3 :(得分:0)

试试这个。 无需在Indexof

中包含数组参数

int arrayPosition = arrayexample.IndexOf(stringy);

答案 4 :(得分:0)

根据您的评论,您实际上并未尝试在数组中查找字符串。您实际尝试做的事情是将字符串映射到性别。您完全使用错误的工具完成该任务(并使您的生活变得困难)。字典将值映射到其他值;他们是你需要的。

public enum Gender { Male, Female }
private Dictionary<string, Gender> _mapping = new Dictionary<string, Gender> {
    ["Name One"] = Gender.Male,
    ["Name Two"] = Gender.Female,
};
// now do something with _mapping[name]