public static void参考(ref int a,ref int b)
在这个我如何找到这些变量是编程的参考变量..我怎么找到他们的类型
答案 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
方法,因为a
和b
必须是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);
}