Вот код ответа @ dcastro, измененный для C # 7.0 с именованными кортежами и декодированием кортежей, который упрощает обозначение:
public async void Method1()
{
// Version 1, named tuples:
// just to show how it works
/*
var tuple = await GetDataTaskAsync();
int op = tuple.paramOp;
int result = tuple.paramResult;
*/
// Version 2, tuple deconstruction:
// much shorter, most elegant
(int op, int result) = await GetDataTaskAsync();
}
public async Task<(int paramOp, int paramResult)> GetDataTaskAsync()
{
//...
return (1, 2);
}
Подробнее о новых именованных кортежах, литералах и фрагментах кортежей см. : https://blogs.msdn.microsoft.com/dotnet/2017/03/09/new-features-in-c-7-0/
Несколько замечаний:
.menu:nth-child(1)
будет искать элемент class="menu"
, который является самым первым дочерним элементом его родителя. Без вашего контекста я не могу сказать, существует ли это, но это, вероятно, не то, что вы хотите в этом случае.
nth-child()
начинается с 1
, а не с 0
.
div:nth-child(1)
будут применяться только к <div>
элементам, которые являются первыми дочерними элементами их родителей. Если вы посмотрите на свой HTML, ни один из ваших элементов <div>
не будет первым потомком их родителя. Вместо этого вы можете начать с div:nth-child(2)
.
Вы можете вытащить некоторые из общих вещей и поместить их в nth-child(odd)
и nth-child(even)
, чтобы избежать повторения.
Опираясь на это, вы можете посмотреть что-то вроде кода ниже. (Я уменьшил объем вашего CSS, который я не коснулся, просто чтобы было немного яснее, что я изменил)