作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
令我沮丧的是,以下代码无法编译。
但是,如果我删除 ref
关键字,它会编译。
class xyz
{
static void foo(ref object aaa)
{
}
static void bar()
{
string bbb="";
foo(ref bbb);
//foo(ref (object)bbb); also doesnt work
}
}
谁能解释一下?我正在猜测它与裁判有关对派生非常严格类。
有什么方法可以让我通过 字符串类型的对象到 foo(ref
?
对象变量名)
最佳答案
它必须是完全匹配,否则 foo
可以做:
aaa = 123;
这对 foo
有效(它会将 int
装箱到 object
),但不会用于 bar
(它是 string
)。
两个即时选项;首先,使用中间变量和类型检查:
object tmp = bbb;
foo(ref tmp);
bbb = (string)tmp;
或者,也许尝试泛型(foo<T>(ref T aaa)
);或治疗 bbb
作为object
而不是 string
.
关于c# - 路过 'ref' - c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6371690/
令我沮丧的是,以下代码无法编译。 但是,如果我删除 ref 关键字,它会编译。 class xyz { static void foo(ref object aaa) { }
我要传点...到我的 map()使用 quosure 以便我可以评估提供的参数。 路过...直接有效,但引用 ...和拼接使用 !!!导致错误。 我试过使用各种 rlang 函数,即 syms , q
我是一名优秀的程序员,十分优秀!