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))
{
}
在静态类中它们必须是静态的这一事实禁止这样做。为什么要这样做?您当前的代码没有问题,对吗?在静态类中它们必须是静态的这一事实禁止了这一点。您为什么要这样做?您当前的代码没有问题,对吗?