加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 为什么Type.IsByRef类型String返回false如果String是引用

发布时间:2020-12-15 03:44:58 所属栏目:百科 来源:网络整理
导读:根据 this,一个字符串(或String)是一个引用类型. 但给出: Type t = typeof(string); 然后 if (t.IsByRef) ... 返回false 为什么? 编辑:经过一些快速测试,我显然误会了IsByRef的目的… 即使使用类名代替’string’,也返回false.我正在编写一个通用类,并且
根据 this,一个字符串(或String)是一个引用类型.

但给出:

Type t = typeof(string);

然后

if (t.IsByRef) ...

返回false

为什么?

编辑:经过一些快速测试,我显然误会了IsByRef的目的…
即使使用类名代替’string’,也返回false.我正在编写一个通用类,并且想要测试当通用实例化时传入的类型是否是值或引用类型.一个人怎么测试呢?

解决方法

您应该使用IsValueType:
bool f = !typeof (string).IsValueType; //return true;

对于IsByRef,此属性的目的是确定参数是通过ref还是通过值传递给方法.

你有一个通过ref传递一个方法的例子:

public static void Foo(ref int a)
{
}

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读