我有以下代码:
delegate string CD();
void MyFunction()
{
stringBuilder.Append((CD)delegate()
{
switch(whatever)
{
case 1 : return "A";
...
default: return "X";
}
});
}
但是 stringBuilder
附加文本 MyNamespace.MyClass+CD
而不是 A
或 X
。为什么会这样?
最佳答案
因为 StringBuilder.Append 在您提供的参数上调用了 ToString。就这是一个转换为 CD 的委托(delegate)而言,它返回它的类型。
要返回值 A 或 X,必须调用委托(delegate)。但是 Append 不需要委托(delegate),因此它不会调用它。
关于c# - 匿名函数没有返回正确的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7886584/