Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#将方法中的变量定义为列表-可能吗?_C#_Variables_Defined_Tolist - Fatal编程技术网

c#将方法中的变量定义为列表-可能吗?

c#将方法中的变量定义为列表-可能吗?,c#,variables,defined,tolist,C#,Variables,Defined,Tolist,在php中,可以将方法定义的变量作为数组获取: function test($a,$b){ print_r( get_defined_vars() ); } 在C#中是否可能?您可以使用反射来实现这一点 如果您希望以内联方式执行此操作,则首先需要确定当前使用的方法 var currentMethod = System.Reflection.MethodInfo.GetCurrentMethod(); 然后可以检索该方法的参数: foreach(ParameterInfo

在php中,可以将方法定义的变量作为数组获取:

function test($a,$b){
  print_r(
       get_defined_vars()
  );
}

在C#中是否可能?

您可以使用反射来实现这一点

如果您希望以内联方式执行此操作,则首先需要确定当前使用的方法

var currentMethod = System.Reflection.MethodInfo.GetCurrentMethod();
然后可以检索该方法的参数:

foreach(ParameterInfo parameter in currentMethod.GetParameters())
{
    var name = parameter.Name;
    //...
}

您可以使用反射来实现这一点

如果您希望以内联方式执行此操作,则首先需要确定当前使用的方法

var currentMethod = System.Reflection.MethodInfo.GetCurrentMethod();
然后可以检索该方法的参数:

foreach(ParameterInfo parameter in currentMethod.GetParameters())
{
    var name = parameter.Name;
    //...
}
类似于

string a = "hello";
int b = 20;
DateTime c = DateTime.Now;

foreach (LocalVariableInfo variable in MethodInfo.GetCurrentMethod().GetMethodBody().LocalVariables)
{
    Console.WriteLine(variable);
}
类似于

string a = "hello";
int b = 20;
DateTime c = DateTime.Now;

foreach (LocalVariableInfo variable in MethodInfo.GetCurrentMethod().GetMethodBody().LocalVariables)
{
    Console.WriteLine(variable);
}

返回当前范围内的所有变量,包括参数和全局变量。谢天谢地,C#没有相似之处。事实上,“作用域”并不像在编译时或PHP中那样存在于运行时。你到底想干什么?可能有一个很好的方法…@Kobi-我有很多参数的WebService方法,我想把它转换成一个列表,并在WebService外部验证它们。我不想一次又一次地重新申报。Toda返回当前范围内的所有变量,包括参数和全局变量。谢天谢地,C#没有相似之处。事实上,“作用域”并不像在编译时或PHP中那样存在于运行时。你到底想干什么?可能有一个很好的方法…@Kobi-我有很多参数的WebService方法,我想把它转换成一个列表,并在WebService外部验证它们。我不想一次又一次地重新申报。Todaget_defined_vars()包含方法参数,但不限于此。Idd,它获取其调用()范围内的变量。查看OP的问题,获取当前方法的参数对他来说应该足够了。get_defined_vars()包括方法参数,但不限于此。Idd,它获取调用()的范围内的变量。看着OP的问题,获取当前方法的参数对他来说应该足够了。据我所知,这甚至不包括变量的名称和值,而是指编译后的代码,可能有额外的变量(比如IEnumerator和变量集合)+1;可能需要将方法参数附加到此。据我所知,它甚至不包括变量的名称和值,并且引用编译后的代码,其中可能有额外的变量(例如IEnumerator和变量集合)+1;可能要将方法参数附加到此。