C# Func操作作为具有的函数的参数,以及如何编写主体?

C# Func操作作为具有的函数的参数,以及如何编写主体?,c#,C#,我有如下的课程。我只想让函数testa和testb得到相同的结果,testa有显式类型字符串,而泛型类型是为testb定义的: 您不知道testb中的T是什么,因此无法提供Concrete值,defaultT除外: 第三个选项是为T提供新的约束,然后您可以构造一个: public void testb<T>(Func<T, T> action) where T : new() { action(new T()); } 小旁注:正如注释所述,act

我有如下的课程。我只想让函数testa和testb得到相同的结果,testa有显式类型字符串,而泛型类型是为testb定义的:

您不知道testb中的T是什么,因此无法提供Concrete值,defaultT除外:

第三个选项是为T提供新的约束,然后您可以构造一个:

public void testb<T>(Func<T, T> action) where T : new()
{
    action(new T());        
}
小旁注:正如注释所述,action通常是一个函数表达式的名称,它没有返回ie action或action等。它对代码没有影响,但可能会让其他程序员感到困惑。我们都是书呆子

您不知道testb中的T是什么,因此无法提供具体的te值,除了defaultT:

第三个选项是为T提供新的约束,然后您可以构造一个:

public void testb<T>(Func<T, T> action) where T : new()
{
    action(new T());        
}

小旁注:正如注释所述,action通常是一个函数表达式的名称,它没有返回ie action或action等。它对代码没有影响,但可能会让其他程序员感到困惑。我们都是书呆子

调用Func变量action有点滑稽@尤瓦利扎科夫你当然是对的。我的首选是func,但为了避免混淆,我只保留OP的原始代码。调用func变量action有点滑稽@尤瓦利扎科夫你当然是对的。我的首选是func,但为了避免混淆,只需坚持OP的原始代码即可。
public void testb<T>(Func<T, T> action, T testValue)
{
    action(testValue);        
}

public void testall()
{
    testa(tc =>
    {
        return tc;
    });

    testb<string>(tc =>
    {
        return tc;
    }, "abc"); // now same result as testa
}
public void testb<T>(Func<T, T> action) where T : new()
{
    action(new T());        
}