首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不可调用的成员'List<PKT,T>.FilterFunction‘不能像方法一样使用。

不可调用的成员'List<PKT,T>.FilterFunction‘不能像方法一样使用。
EN

Stack Overflow用户
提问于 2016-07-05 06:23:12
回答 1查看 748关注 0票数 0

当尝试使用类似FilterFunction的方法时,我有一个错误。

当发生错误时,我不知道如何解决它?

我只使用这样的代码:

我创建了如下函数委托:

代码语言:javascript
复制
internal class FilterFunctionDelegate<PKT, T>
{
}

然后,在FDBindingList!2.cs类中,我设置了这个类:

代码语言:javascript
复制
private FilterFunctionDelegate<PKT, T> FilterFunction;

internal delegate bool FilterFunctionDelegate(T item);

internal void Add(T item)
{
    if ((this.FilterFunction == null) || this.FilterFunction(item)){}
}

ArbsBindingList.cs

代码语言:javascript
复制
base.SetFilter(new FDBindingList<long, Arb>.FilterFunctionDelegate(this.Filter.IsSatisfies));

我的错误是:

在线this.FilterFunction(item)

不可调用的成员'FDBindingList.FilterFunction‘不能像方法一样使用。

和行:

无法从'JustXin.Windows.Forms.FDBindingList.FilterFunctionDelegate‘转换为'JustXin.Windows.Forms.FilterFunctionDelegate’

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-05 06:52:07

FilterFunctionDelegate既是一个类名,也是委托的名称.这很奇怪,应该会导致错误,因为编译器无法区分它们。不过,无论如何,您都需要这个类,只需使用FDBindingList!2.cs中的委托(奇怪的文件名顺便说一句,!可能会造成问题):

代码语言:javascript
复制
internal delegate bool FilterFunctionDelegate(T item);

internal void Add(T item)
{
    if ((this.FilterFunctionDelegate == null) || this.FilterFunctionDelegate(item)) { /* ... */ }
}

要分配委托,只需编写类似于以下内容的内容:

代码语言:javascript
复制
fdbFindingList.FilterFunctionDelegate = delegate(T item) { /* your delegate function here*/ }

通过使用更类似.NET-3.5的Func<T>,也可以实现同样的效果。

代码语言:javascript
复制
internal Func<T, bool> FilterFunctionDelegate;

// ...

现在把它设置成这样

代码语言:javascript
复制
fdbFindingList.FilterFunctionDelegate = (T) => /* your delegate-code here*/

就这样叫它:

代码语言:javascript
复制
var list = new FDBindingList<long, Arb>();
list.FilterFunctionDelegate = ...
list.FilterFunctionDelegate(MyInstanceOfT)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38196473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档