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
仍然没有比赛.
代码从根本上起作用:
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.
简要问题清单:
refDictionary<string,string>.Value而不是.Name