Статическое ключевое слово C# внутри LINQ Select, Where,C#

Место общения программистов C#
Ответить
Anonymous
 Статическое ключевое слово C# внутри LINQ Select, Where,

Сообщение Anonymous »

Я заметил, что добавление ключевого слова static в выражения Linq допустимо.
Однако оно не генерирует никакого другого кода.
Пример:
list.Select(static model => model.Age).ToList();
list.Where(static model => model.Age > 18).ToList();

Какова цель ключевого слова static в этом контексте?
Смотрите сгенерированный код на Sharplab
Сгенерированный код в соответствии с Sharplab:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Security;
using System.Security.Permissions;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.0.0.0")]
[module: UnverifiableCode]
public class Class
{
[Serializable]
[CompilerGenerated]
private sealed class c
{
public static readonly c 9 = new c();

public static Func 9__2_0;

public static Func 9__2_1;

internal bool b__2_0(Model model)
{
return model.Age > 10;
}

internal bool b__2_1(Model model)
{
return model.Age > 10;
}
}

private List list = new List();

public Class()
{
List obj = list;
Model model = new Model();
model.Age = 10;
obj.Add(model);
}

public void A()
{
List value = Enumerable.ToList(Enumerable.Where(list, c.9__2_0 ?? (c.9__2_0 = new Func(c.9.b__2_0))));
List value2 = Enumerable.ToList(Enumerable.Where(list, c.9__2_1 ?? (c.9__2_1 = new Func(c.9.b__2_1))));
Console.WriteLine(value);
Console.WriteLine(value2);
}
}
public class Model
{
public int Age;
}


Подробнее здесь: https://stackoverflow.com/questions/718 ... lect-where
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»