我要在一个方法中更改两个变量但是我应该如何返回两个?没有数组。我想Tuple<>
应该有所帮助,但我不知道如何采用变量。这段代码应该带有特殊的子串。
public static List<string> SomethingInsideTheOther(List<int> listOfPositionsOfQuotationMarks1, List<int> listOfPositionsOfQuotationMarks2, List<string> listOfBoxes, string text)
{
int beggining = Math.Min(listOfPositionsOfQuotationMarks1[0], listOfPositionsOfQuotationMarks2[0]);
if (beggining != 0)
{
listOfBoxes.Add(text.Substring(0, beggining));
}
int i = 0;
int g = 0;
for ( ; i < listOfPositionsOfQuotationMarks1.Count - 1;)
{
for ( ; g < listOfPositionsOfQuotationMarks2.Count - 1;)
{
if (listOfPositionsOfQuotationMarks1[i] < listOfPositionsOfQuotationMarks2[g])
{
listOfBoxes.Add(text.Substring(listOfPositionsOfQuotationMarks1[i], listOfPositionsOfQuotationMarks1[i + 1] - listOfPositionsOfQuotationMarks1[i] + 1));
WhenILssG(i, g, listOfPositionsOfQuotationMarks1, listOfPositionsOfQuotationMarks2);
i =
}
else
{
listOfBoxes.Add(text.Substring(listOfPositionsOfQuotationMarks2[g], listOfPositionsOfQuotationMarks2[g + 1] - listOfPositionsOfQuotationMarks2[g] + 1));
WhenIGtrG(i, g, listOfPositionsOfQuotationMarks1, listOfPositionsOfQuotationMarks2);
}
break;
}
goto end;
}
end:
return listOfBoxes;
}
public static Tuple<int, int> WhenILssG(int i, int g, List<int> listOfPositionsOfQuotationMarks1, List<int> listOfPositionsOfQuotationMarks2)
{
i += 1;
while (listOfPositionsOfQuotationMarks1[i] > listOfPositionsOfQuotationMarks2[g] && g < listOfPositionsOfQuotationMarks2.Count - 1)
{
g += 1;
}
i += 1;
return new Tuple<int, int>(i, g);
}
public static Tuple<int, int> WhenIGtrG(int i, int g, List<int> listOfPositionsOfQuotationMarks1, List<int> listOfPositionsOfQuotationMarks2)
{
g += 1;
while (listOfPositionsOfQuotationMarks1[i] < listOfPositionsOfQuotationMarks2[g] && i < listOfPositionsOfQuotationMarks1.Count - 1)
{
i += 1;
}
g += 1;
return new Tuple<int, int>(i, g);
}
答案 0 :(得分:3)
您正在使用面向对象的语言,因此请定义一个包含返回值的对象。
Tuple
方法也没关系(尽管我认为它不太清楚,因此不太可取),但问题是你使用了错误的方法来创建它。您可以使用静态方法Tuple.Create
创建新的Tuple
。
或者您可以在构造函数中明确说明Tuple
的类型:var newTuple = new Tuple<int, int>(value1, value2)