如何查找引用数据类型

时间:2009-03-17 06:08:06

标签: c#

public static void参考(ref int a,ref int b)
                                                                                                   在这个我如何找到这些变量是编程的参考变量..我怎么找到他们的类型

3 个答案:

答案 0 :(得分:3)

你的意思是你想通过反射知道方法参数是by-ref?

您使用MethodBase.GetParameters获取方法的参数,然后使用ParameterInfo.ParameterType查找参数的类型,并使用Type.IsByRef检查是否通过引用传递。

这是一个简单的例子:

using System;
using System.Reflection;

public class Test
{
    public static void Refer(ref int a,ref int b)
    {
    }

    static void Main()
    {
        MethodInfo method = typeof(Test).GetMethod("Refer");
        ParameterInfo[] parameters = method.GetParameters();
        foreach (ParameterInfo parameter in parameters)
        {
            Console.WriteLine("{0} is ref? {1}",
                              parameter.Name,
                              parameter.ParameterType.IsByRef);
        }
    }
}

对于使用a.GetType()typeof(a)等的变量,您无法以“强大”方式执行此操作。GetType()查找值的类型 a的{​​{1}},只是int

答案 1 :(得分:1)

由于C#是强类型的,因此您可以安全地使用任何int方法,因为ab必须是ints。但是如果您在运行时需要Type,请使用typeof运算符。

Type intType = typeof(a);

答案 2 :(得分:0)

您在parameterInfo.ParameterType上有IsByRef属性。

MethodInfo refer = typeof(MyClass).GetMethod("Refer");
ParameterInfo [] parameters = refer.GetParameters();
foreach (ParameterInfo parameter in parameters)
{
        Console.WriteLine("Parameter: {0}, Type: {1}, ByRef: {2}", parameter.Name,
        parameter.ParameterType.Name,
        parameter.ParameterType.IsByRef);
}