что эквивалентная функция диапазона (VBA) в C # - PullRequest
0 голосов
/ 15 января 2019

Я нахожусь в процессе миграции VBA на C #. Я не знаю, как использовать или что является эквивалентом в C #. Позвольте мне показать вам строку кода:

Range("U1:U" & LastRow).FormulaR1C1 = "=if(rc[-1]=""" & qyyyy & """,rc[-15],rc[-14])"

1 Ответ

0 голосов
/ 15 января 2019
Range("U1:U" & LastRow).FormulaR1C1 =  $@"=if(rc[-1]=""{qyyyy}"",rc[-15],rc[-14])";

Во-первых, конкатенация строк - + в C # против & в VB.NET.

Во-вторых, вместо конкатенации используется интерполяция строк, потому что это избавляет нас от необходимости добавлять дополнительные кавычки для завершения строк.

Работает так:

var x = 1;
var y = $"The number is {x}.";
// y = "The number is 1."

$ указывает, что строка интерполирована, что означает, что {qyyyy} преобразуется в строку.

@ перед строкой означает, что символы в строке не экранированы. Это позволяет нам использовать "" в строке для представления одного ". В противном случае мы должны были бы сделать это:

$"=if(rc[-1]=\"{qyyyy}\",rc[-15],rc[-14])";

... используя \ для кавычек. Это тоже работает, но мне немного сложнее читать. Для людей, привыкших к определенным языкам, это может быть лучше.

...