gpt4 book ai didi

c# - func作为函数参数的action用,body怎么写?

转载 作者:太空宇宙 更新时间:2023-11-03 19:51:14 25 4
gpt4 key购买 nike

我有一个类如下。我只想让函数 testatestb 得到相同的结果,testa 有明确的类型字符串,而通用类型是为 testb:

public class testclass
{
public void testa(Func<String, String> action)
{

Console.WriteLine(action("what?"));
}

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

testb<string>(tc =>
{
return tc;
});
}

public void testb<T>(Func<T, T> action)
{

**//How to write the body here to get the same result as testa do
//like action("abc");?**
}

}

最佳答案

你不知道什么Ttestb , 所以你不能提供一个具体的值,除了 default(T) :

public void testb<T>(Func<T, T> action)
{
action(default(T)); // null for reference types, 0 for ints, doubles, etc
}

另一种选择是将测试值提供给 testb

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
}

第三种选择是提供约束 new()T ,然后你可以构造一个:

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

小旁注:如评论所述,action通常是给没有返回值的函数表达式的名称(即 Action<T>Action<string> 等)。它对您的代码没有影响,但可能会使其他程序员感到困惑。我们是一群迂腐的人!

关于c# - func<T,T>作为函数参数的action用<T>,body怎么写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39266098/

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