gpt4 book ai didi

c# - 路过 'ref' - c#

转载 作者:太空狗 更新时间:2023-10-30 00:08:42 25 4
gpt4 key购买 nike

令我沮丧的是,以下代码无法编译。

但是,如果我删除 ref 关键字,它会编译。

class xyz
{
static void foo(ref object aaa)
{
}

static void bar()
{
string bbb="";
foo(ref bbb);
//foo(ref (object)bbb); also doesnt work
}
}
  1. 谁能解释一下?我正在猜测它与裁判有关对派生非常严格类。

  2. 有什么方法可以让我通过 字符串类型的对象到 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/

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