Недавно я читал какой-то код на Github и наткнулся на следующую строку:
if (((tmp = rx.IndexOf("<")) >= 0) && (rx.IndexOf(">") > tmp ))
, в частности
(tmp = rx.IndexOf("<") >= 0)
И немедленное использование переменной tmp
в сравнении в той же строке в следующей части оператора if
(rx.IndexOf(">") > tmp )
, в котором переменная задается строкой, метод indexOf (), а затем выполняется сам оператор присваиваниявычисляется с помощью оператора равенства «больше или равно».
Сначала я подумал, что это опечатка, но при оценке кода с помощью простого консольного приложения я обнаружил, что он действителен, и отличный ярлык.
Вопрос в том, каков технический термин для этого? как я не мог найти объяснения в различных сайтах помощи C #.
Пример консольного приложения для демонстрации того, как использовался оператор.
public static void Main()
{
// first test - the actual code I found in gitHub
int tmp;
int tmp2;
string rx = " < test>";
// the below line is the subject of the question.
if (((tmp = rx.IndexOf("<")) >= 0) && (rx.IndexOf(">") > tmp )){
Console.WriteLine("The Close brace is after the opening brace!");
}
// additional test
int r;
Console.WriteLine(r = 25 + 3);
Console.WriteLine(r);
// and another
int w = -1;
Console.WriteLine(" The index of '<' is greater than 0 : " + _
((w = rx.IndexOf("<")) > 0).ToString() + _
" and the value of w is " + w.ToString());
}
Вывод приведенного выше кода приведен ниже. Опять же, я понимаю, что код работает, я хотел бы знать, как это называется технически?
The Close brace is after the opening brace!
28
28
The index of '<' is greater than 0 : True and the value of w is 2