- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
Func<T, TResult>
委托(delegate)用于具有单个参数和返回类型 TResult 的委托(delegate)。
这是一个特殊的委托(delegate)还是我们可以自己手动编码的东西?
例如我可以创建一个 Func<T, TResult>
吗?但是它接受 2 个输入参数?
最佳答案
"Func"
实际上是 System
中的族类命名空间,即:
Func<TResult>
(0 个参数), Func<T,TResult>
(1 个参数), Func<T1,T2,TResult>
(2 个参数)... Func(17)
(16 个参数)。
总共有 17 个不同的“Func”类,支持 0 到 16 个参数。允许它们在代码中共享名称(“Func”),即使它们实际上是不同的类型(Func
、Func'
、Func''
等),这要归功于泛型的工作方式在 .NET 中——泛型的数量决定/消除使用哪个实际类型的歧义。
快乐编码。
就委托(delegate)之间的转换而言,这可能有用(在 LINQPad 中运行,“C# 程序”):
delegate int MyDelegate (int y);
void Main()
{
Func<int,int> fun1 = (q) => q * q;
MyDelegate del = new MyDelegate(fun1); // Convert the "Func" delegate to custom...
Func<int,int> fun2 = new Func<int,int>(del); // ...and back
}
关于c# - Func<T, TResult> 是一个特殊的委托(delegate)还是我们也可以手动创建它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6669405/
我正在研究撤消-重做实现,我希望其堆栈上的撤消或重做项目包含对某个 Func 的引用。其中 TResult本身就是一个 Func .重点是当Func从撤消堆栈调用,然后将返回值存储在重做堆栈中(反之亦
Func<>在 .NET 中非常方便。有没有一种方法可以指定参数类型并将结果值设置为 void?我想通过 void Write(string)作为参数。 最佳答案 Action - “封装一个接受单个
注意:请适本地重新标记和/或重命名 我有课,FooEnumerator ,它包装了一个 Foo并实现 IEnumerable . Foo s 代表树状数据结构,FooEnumerator枚举出来的s是
如果我只能访问任务,如何使用反射或任何其他方式创建和返回延续任务? 我需要一种方法让继续中的异常返回到原始调用者。据我所知,这只能通过返回延续任务而不是原始任务来完成。问题在于我不知道任务的结果类型,
我在运行我的应用程序时遇到此错误(尽管我的应用程序运行正常): C:\Users\dassa\Downloads\flutter_windows_2.2.3-stable\flutter\.pub-c
我正在加载一个程序集并调用一个静态方法,该方法将使用 MethodInfo.Invoke() 通过反射创建一个类型为“MyClass1”(此类型在运行时指定)的新对象。当该方法是普通同步方法时,这很好
首先,我知道我可以只定义两个重载的辅助方法来完成我需要的事情(或者甚至只定义两个具有不同名称的 Func<>),但它们只被一个公共(public)方法使用,所以我'我正在探索定义两个本地 Func<>
正如标题所说,“如何将 TResult 转换为 object 或 List 到 Expression 中?” public Task ExplicitLoadAsync(T entity, E
首先,foo 是一个 Func 对象。有可能做类似的事情 Func bar = ConvertFunction(foo); 从而将 Func 转换为 Func。 最佳答案 是的,这是可能的: Func
我非常喜欢使用 C# 5.0 异步编程。然而,有几个地方更新旧代码以与 TAP 模型保持一致给我带来了问题。 这是其中之一 - 我不确定为什么 Task 在 TResult 中不是协变的,但在尝试更新
我正在使用 Entity Framework 、ASP.NET 和 C#3.5我借用了以下代码,使用 GridView 中的 sortExpression 而不是实体的属性来进行排序: pub
如何使用“async Task”从方法返回数据。我尝试按照以下链接使用, How to handle return values in async function谁能给个答案? 使用的方法, Pub
根据documentation ValueTask ... Provides a value type that wraps a Task and a TResult, only one of whi
我承认这个问题是主观的,但我对社区的观点很感兴趣。我有一个缓存类,它采用 Func 类型的缓存加载器函数。 ,它用于从数据库中检索值并将其存储在缓存中。 public static class Cac
我有这个简单的代码,可以异步启动方法。它使用TCS以便使用Task包装代码。 Task DoWork() { var source = new TaskCompletionSource ();
我有两个类(它们保存在 RavenDB 中): public class Game { public int Id { get; set; } public int HomeTeamI
我不能使用 ToList()扩展方法。我使用的代码是, return this.Semesters.ToList() 上面代码中的'Semesters'是一个EntityCollection。这些
我有一个扩展类扩展 Func其签名如下所示: public static ITryAndReturnValue Try(this Func func, T arg, int retries) 我可以通
这个问题在这里已经有了答案: Await on a completed task same as task.Result? (2 个答案) 关闭 6 年前。 我写了一个小例子来在方法 TestMet
我有一个条件对象,如果它的值不为空,我将在其中将每个属性转换为一个函数。 public class TestClassCriteria { public bool? ColumnA { get
我是一名优秀的程序员,十分优秀!