Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 定义内联扩展方法_C#_Extension Methods - Fatal编程技术网

C# 定义内联扩展方法

C# 定义内联扩展方法,c#,extension-methods,C#,Extension Methods,考虑以下代码: Func<int,bool> hasFullAccess = (mask => mask % 2 == 1); foreach (AccessControlEntry ace in (IEnumerable)usrAcl) { if (hasFullAccess(ace.AccessMask) 或者这是不可能的?你不能。您需要为此声明一个单独的扩展方法: public static class Extensions { public stat

考虑以下代码:

Func<int,bool> hasFullAccess = (mask => mask % 2 == 1);
foreach (AccessControlEntry ace in (IEnumerable)usrAcl)
{
    if (hasFullAccess(ace.AccessMask)

或者这是不可能的?你不能。您需要为此声明一个单独的扩展方法:

public static class Extensions 
{
    public static bool HasFullAccess(this int mask)
    { 
        return mask % 2 == 1;
    }
}

你不能。您需要为此声明一个单独的扩展方法:

public static class Extensions 
{
    public static bool HasFullAccess(this int mask)
    { 
        return mask % 2 == 1;
    }
}
否(§10.6.9扩展方法);即使可以,也需要更改名称解析规范(§7.6.5.2扩展方法调用)

相反,您可以尝试以下方法:

Func<AccessControlEntry,bool> hasFullAccess = (ace => ace.AccessMask % 2 == 1);

// cast usrAcl as required get IEnumerable<AccessControlEntry>
foreach (var ace in usrAcl.Where(hasFullAccess))
{
}
Func hasFullAccess=(ace=>ace.AccessMask%2==1);
//按要求强制转换usrAcl以获取IEnumerable
foreach(usrAcl.Where中的var ace(hasFullAccess))
{
}
否(§10.6.9扩展方法);即使可以,也需要更改名称解析规范(§7.6.5.2扩展方法调用)

相反,您可以尝试以下方法:

Func<AccessControlEntry,bool> hasFullAccess = (ace => ace.AccessMask % 2 == 1);

// cast usrAcl as required get IEnumerable<AccessControlEntry>
foreach (var ace in usrAcl.Where(hasFullAccess))
{
}
Func hasFullAccess=(ace=>ace.AccessMask%2==1);
//按要求强制转换usrAcl以获取IEnumerable
foreach(usrAcl.Where中的var ace(hasFullAccess))
{
}

在静态类中它们必须是静态的这一事实禁止这样做。为什么要这样做?您当前的代码没有问题,对吗?在静态类中它们必须是静态的这一事实禁止了这一点。您为什么要这样做?您当前的代码没有问题,对吗?