gpt4 book ai didi

c# - 如果 String 是引用类型,为什么类型 String 的 Type.IsByRef 返回 false?

转载 作者:可可西里 更新时间:2023-11-01 08:17:21 24 4
gpt4 key购买 nike

根据 this字符串(或字符串)是引用类型。

尚未给出:

Type t = typeof(string);

然后

if (t.IsByRef) ...    

返回错误

为什么?

编辑:经过一些快速测试,我显然误解了 IsByRef 的目的......即使使用类名代替“string”,也会返回 false。我正在编写一个泛型类,想测试在实例化泛型时传入的类型是值类型还是引用类型。如何对此进行测试?

最佳答案

您应该改用 IsValueType:

bool f = !typeof (string).IsValueType; //return true;

对于IsByRef,这个属性的作用是判断参数是通过ref还是通过value传递给方法。

例如,您有一个方法,其中 a 由 ref 传递:

public static void Foo(ref int a)
{
}

您可以确定a 是否通过引用传递:

  bool f = typeof (Program).GetMethod("Foo")
.GetParameters()
.First()
.ParameterType
.IsByRef; //return true

关于c# - 如果 String 是引用类型,为什么类型 String 的 Type.IsByRef 返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16578609/

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