Замена вектора на arraylist

Немного упрощенно: функция лямбда - это функция, которая может быть передана другим функциям и доступна для доступа к логике.

В синтаксисе C # лямбда часто компилируется в простые методы так же, как анонимные делегаты, но

Например, (в C # 3):

LinqToSqlContext.Where( 
    row => row.FieldName > 15 );

LinqToSql может читать эту функцию (x> 15) и преобразовывать ее к фактическому SQL для выполнения с использованием деревьев выражений.

Вышеприведенное утверждение становится:

select ... from [tablename] 
where [FieldName] > 15      --this line was 'read' from the lambda function

Это отличается от обычных методов или анонимных делегатов (которые действительно являются манерами компилятора), потому что они не могут быть прочитаны .

Не все методы в C #, которые используют лямбда-синтаксис, могут быть скомпилированы в деревья выражений (т.е. фактические лямбда-функции). Например:

LinqToSqlContext.Where( 
    row => SomeComplexCheck( row.FieldName ) );

Теперь дерево выражений невозможно прочитать - SomeComplexCheck не может быть разбит. Оператор SQL будет выполняться без того, и каждая строка данных будет помещена через SomeComplexCheck.

Функции Lambda не следует путать с анонимными методами. Например:

LinqToSqlContext.Where( 
    delegate ( DataRow row ) { 
        return row.FieldName > 15; 
    } );

У этого также есть встроенная функция, но на этот раз это просто магия компилятора - компилятор C # разделит это на новый метод экземпляра с автогенерированным именем.

Анонимные методы не могут быть прочитаны, и поэтому логика не может быть переведена так, как может, для лямбда-функций.

0
задан ShaggyInjun 16 January 2019 в 16:01
поделиться

1 ответ

Vector синхронизируется и не принимает значения null. Вы можете использовать

List<String> l = Collections.synchronizedList(new ArrayList<String>())

, но это не 100% идентичная замена. Если в вашем проекте нет хороших тестов, не заменяйте Vector и добавляйте //NOSNAR , чтобы отключить проверку сонара в данной строке.

0
ответ дан Karol Dowbecki 16 January 2019 в 16:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: