Эта функция всегда возвращает значение null. sString - это класс со строкой «Имя» и строковые значения «Значение». Не спрашивайте, почему я не использую регулярную строку - это сложно. вот моя функция:Функция всегда возвращает null?
static string Get_sString(string VarName, ref List<sString> VarList)
{
foreach (sString TestsString in VarList)
{
if (TestsString.Name == VarName)
{
return TestsString.Name;
}
}
return null;
}
Он должен вернуть экземпляр с тем же значением, как имя VarName, и он работает, за исключением случаев, когда оператор всегда ложно. Я не могу понять, почему. У меня фактически есть почти идентичный класс, называемый sDecimal, где единственное различие - это свойство Value - это десятичное число, а не строка. Get_sDecimal() отлично работает с этим, и единственное различие между Get_sDecimal() и Get_sString() заключается в том, что каждый тестирует sDecimal и один тест sString. Спасибо!
EDIT: Вот класс 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;
}
}
EDIT: Вот некоторые выходные коды (и выходные), чтобы очистить вещи.
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;
}
Вот результат:
Looking for: Q Comparing with: Q
EDIT: Я добавил еще пару переменных в списке. Вот новый результат:
Looking for: Q Comparing with: Q Looking for: Q Comparing with: Z Looking for: Q Comparing with: VariableX
По-прежнему нет соответствия.
Могу ли я спросить, почему вы вместо этого не используете обычный словарь? – Thilo
Когда вы нарушаете код и вручную проверяете VarList, действительно ли он содержит строку, которую вы ищете (помните '==' is case senstive)? –
Да, да. Я сделал чек, где он напечатал как VarName, так и TestsString.Name на экране, и оба были идентичны. Он по-прежнему возвращает null. – cubician