根据
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