函数总是返回null?

cub*_*ian 0 c# foreach null class function

此函数始终返回null.sString是一个带有字符串"Name"和字符串"Value"值的类.不要问我为什么不使用常规字符串 - 这很复杂.这是我的功能:

static string Get_sString(string VarName, ref List<sString> VarList)
{
    foreach (sString TestsString in VarList)
    {
        if (TestsString.Name == VarName)
        {
            return TestsString.Name;
        }
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

它应该返回具有与VarName相同的Name值的实例,并且它可以工作,除了if语句总是为false.我无法弄清楚为什么.我实际上有一个几乎相同的类,叫做sDecimal,唯一的区别是Value属性是十进制,而不是字符串.Get_sDecimal()与此完美匹配,Get_sDecimal()和Get_sString()之间的唯一区别是,一个测试sDecimal,一个测试sString. 谢谢!

编辑:这是sString类.

class sString
{
    public string Name;
    public string Value;

    /// <summary>
    /// String Value variables that may have the same name.
    /// </summary>
    /// <param name="n">Internal name of variable.</param>
    /// <param name="v">Value of variable.</param>
    public sString(string n, string v)
    {
        Name = n;                    
        Value = v;                    
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:这里有一些输出代码(和输出)来清理.

static string Get_sString(string VarName, ref List<sString> VarList)
        {
            foreach (sString TestsString in VarList)
            {
                Console.WriteLine("Looking for: " + VarName);
                Console.WriteLine("Comparing with: " + TestsString.Name);
                if (TestsString.Name == VarName)
                {
                    Console.WriteLine("Match!");
                    return TestsString.Name;
                }
            }
            return null;
        }
Run Code Online (Sandbox Code Playgroud)

这是输出:

Looking for: Q
Comparing with: Q

编辑:我在列表中添加了几个变量.这是新的输出:

Looking for: Q
Comparing with: Q
Looking for: Q
Comparing with: Z
Looking for: Q
Comparing with: VariableX

仍然没有比赛.

Mar*_*ell 6

代码从根本上起作用:

var list = new List<sString>
{
    new sString("foo", "123"),
    new sString("bar", "456")
};
var s = Get_sString("foo", ref list);
// = "foo", not null
Run Code Online (Sandbox Code Playgroud)

不要误会我的意思 - 我会改变它的每一行.但它并不总是回归null.

简要问题清单:

  • 公共领域
  • 不必要 ref
  • 可以使用 Dictionary<string,string>
  • 可怕的名字
  • 我想知道你是否应该回来.Value而不是.Name

  • @Jay我的钱是在空白上 (2认同)