Добавление параметра к FindAll для Универсального Списка в C#

попробуйте так:

app.use(express.static(__dirname + '/public'));
app.use('/public', express.static(__dirname + '/public'));

и

res.sendFile(path.resolve(__dirname+'/public/', 'pages/post.html'));
5
задан Scott Vercuski 8 April 2009 в 18:49
поделиться

3 ответа

Если вы застряли в C # 2.0, используйте анонимный метод - просто немного более грубое лямбда-выражение (игнорируя деревья выражений ):

List<testObject> objectList = new List<testObject>();
int desiredGroupLevel = 10;

objectList.FindAll(delegate (testObject item)
{
    return item._groupLevel == desiredGroupLevel;
});

Или вы все равно можете использовать вызов метода для начала:

List<testObject> objectList = new List<testObject>();
int desiredGroupLevel = 10;

objectList.FindAll(CheckGroupLevel(desiredGroupLevel));

...

public Predicate<testItem> CheckGroupLevel(int level)
{
    return delegate (testItem item)
    {
        return item._groupLevel == level;
    };
}

Если вы используете Visual Studio 2008, но ориентированы на .NET 2.0, вы все равно можете использовать лямбда-выражение. Это просто трюк с компилятором, который не требует поддержки фреймворка (опять же, игнорируя деревья выражений).

7
ответ дан 14 December 2019 в 01:16
поделиться
List<testObject> objectList = new List<testObject>();

// populate objectList with testObjects

objectList.FindAll(delegate(testObject o){ return GroupLevel(o, 0);} );

private static bool GroupLevel(testObject item, int groupLevel)
{ return item._groupLevel == groupLevel; }

Кроме того, если вы используете VS 2008, вы все равно можете использовать лямбда-выражения при компиляции в 2.0. Он использует компилятор 3.5 с целью 2.0, и мы использовали его в течение нескольких месяцев.

0
ответ дан 14 December 2019 в 01:16
поделиться
  int groupLevel = 0;

  objectList.FindAll(
       delegate(testObject item) 
       { 
          return item._groupLevel == groupLevel; 
       });

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

Работает в C # 2.0 и выше. Я бы порекомендовал использовать лямбду, если в будущем вы перейдете на .NET 3.5.

2
ответ дан 14 December 2019 в 01:16
поделиться
Другие вопросы по тегам:

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