gpt4 book ai didi

c# - C# 中的语法启用模式是什么?

转载 作者:行者123 更新时间:2023-11-30 13:17:37 25 4
gpt4 key购买 nike

C# 语言有几个模式特征,即类不需要从特定接口(interface)派生;而是实现某种模式以参与某些 C# 语法/功能。

让我们考虑一个例子:

public class MyCollection : IEnumerable
{
public T Add(T name, T name2, ...) { }
public IEnumerator GetEnumerator() { return null; }
}

在这里,TYPE是任何类型。基本上我们有一个实现 IEnumerable 的类并有一个名为 Add() 的方法具有任意数量的参数。

这会启用以下新的声明 MyCollection实例:

new MyCollection{{a1, a2, ...}, {b1, b2, ...} }

相当于:

var mc = new MyCollection();
mc.Add(a1, a1, ...);
mc.Add(b1, b2, ...);

神奇!同时,最近(我相信在 BUILD 事件期间)Anders Hejlsberg 透露了新的 await/async也将使用模式来实现,这让 WinRT 无需返回 Task<T> 以外的内容.

所以我的问题是双重的,

  1. Anders 所说的模式是什么,还是我误解了什么?答案应该介于 WinRT 提供的类型之间,类似于 IAsyncFoo。以及未发布的规范。
  2. C# 中是否还有其他此类模式(可能已经存在)?

最佳答案

规范草案发布 - 您可以从 Visual Studio home page 下载它. async 的模式是 driis 的回答中给出的模式——你也可以阅读我的 Eduasync blog series有关更多详细信息,请使用 this post致力于模式。

请注意,此模式 适用于“您可以等待的”。异步方法必须返回void , TaskTask<T> .

除了您最初提到的集合初始值设定项之外,就 C# 中的其他模式而言:

  • foreach可以迭代非 IEnumerable 实现,只要该类型具有 GetEnumerator返回具有 MoveNext() 类型的方法和 Current成员
  • LINQ query expressions解决调用 Select , Where , GroupBy

关于c# - C# 中的语法启用模式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7568558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com