C#:我如何理解Action <IEnumerable <Customer>,Exception>等泛型

Jie*_*eng 1 c# generics

我是c#的新手.主要来自PHP背景或基本VB.

我明白IEnumerable<Customer>这就像是一个客户名单.

但是是什么Action<IEnumerable<Customer>, Exception>.类型IEnumerable<Customer>&的动作Exception.似乎对我来说没什么意义.

Jul*_*iet 5

在C#中,Action并且Func是函数指针,你可以通过他们周围,就像任何其他对象,并调用它们正是你调用其他功能相同的方式.基本上Action<IEnumerable<Customer>, Exception>意味着:

  • 一个返回void的函数,它接受两个类型的参数IEnumerable<Customer>Exception作为输入.

这将是一个兼容的签名:

void DoStuff(IEnumerable<Customer> customer, Exception e) { ... }
Run Code Online (Sandbox Code Playgroud)

有时像你所拥有的那样长的通用签名可能很麻烦,有时可以更好地将这些参数移动到单个对象中,例如:

class CustomerContext {
    public IEnumerable<Customer> Customers { get; set; }
    public Exception Exception { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

至少那时你可以传递一个Action<CustomerContext>,这可以节省一些打字和理智:)