C# 无法从 'out string' 转换为 'out dynamic'

标签 c# string dynamic type-conversion

我有一个结构上与此类似的函数:

void Foo(dynamic arg1, dynamic arg2, out dynamic result) {
    result = arg1 + arg2;
}

我使用的是动态,因为这个函数通常应该处理我向它抛出的任何类型。
但如果我尝试这样调用它:

string Bar = null;
...
Foo("a", "b", out this.Bar);

我收到一条错误消息;我似乎无法将预定义字符串 Bar 传递给函数(无法从“out string”转换为“outdynamic”)。
但是,当我从类型声明和函数调用中删除“out”关键字时,一切都工作得很好(我提到这一点是为了证明其他一切都工作得很好)。
我不明白为什么 out 修饰符会改变整个情况,并且 Dynamic 突然无法转换为字符串,就像我可以通过隐式分配它 as stated in the docs 来做到这一点.
我很乐意感谢任何帮助,似乎没有很多人将字符串传递给期望使用 out 修饰符的 dynamic 函数...

最佳答案

I get an error message; I seemingly can't pass my pre-defined string Bar to the function (Cannot convert from 'out string' to 'out dynamic').

这个错误的原因是无法推断。然而,为了解决这个问题,您可以使用满足此要求的泛型。

 void Foo<T>(dynamic arg1, dynamic arg2, out T result)

一切都按您的示例预期进行...

 Foo("a", "b", out this.Bar); // "ab"
 Foo(1, 123, out int test); // test == 124

关于C# 无法从 'out string' 转换为 'out dynamic',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60175577/

相关文章:

c# - 创建唯一的 URL 安全哈希

c# - 如何保护 ASP.NET_SessionId cookie?

c# - 为什么UserControl文本 block 在设计模式下振动

java - 字符串数组的数组工作不正确

c# - 我如何在没有 .remove 的情况下从列表中删除 "remove"项?

javascript - 如何从 jquery 中的字符串中删除 $、@、% 等特殊字符

python - 将值赋给与 Python 中变量名相同的字符串

Mysql动态行值作为列名

c - 为什么动态二维字符数组中的值被覆盖?

c - 在 C 中实现动态调整堆栈大小的最佳方法是什么?