在PHP中,你可以得到該方法的定義的變量爲數組:c#將方法中的變量定義爲列表 - 是否有可能?
function test($a,$b){
print_r(
get_defined_vars()
);
}
是否有可能在C#?
在PHP中,你可以得到該方法的定義的變量爲數組:c#將方法中的變量定義爲列表 - 是否有可能?
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;
//...
}
get_defined_vars()包含方法參數,但不限於此。 –
Idd,它獲取調用範圍內的變量(http://be2.php.net/manual/en/function.get-defined-vars.php)。看看OP的問題,獲取當前方法的參數應該足夠了。 –
東西像...
string a = "hello";
int b = 20;
DateTime c = DateTime.Now;
foreach (LocalVariableInfo variable in MethodInfo.GetCurrentMethod().GetMethodBody().LocalVariables)
{
Console.WriteLine(variable);
}
就我所知,甚至沒有包含變量的名稱和值,並且引用了編譯後的代碼,它可能有額外的變量(例如IEnumerator和變量集合) – Kobi
+1;可能要附加的方法參數,[ala Christophe的答案](http://stackoverflow.com/questions/7495903/c-defined-variables-in-a-method-as-a-list-is-it-可能/ 7495977#7495977)。 –
你能詳細點嗎? – Scott
[get_defined_vars](http://php.net/manual/en/function.get-defined-vars.php)返回當前作用域中的所有變量,包括參數和全局變量。謝天謝地,C#沒有任何相似之處。實際上,「範圍」在運行時並不像在編譯時或PHP中那樣存在。你究竟想要做什麼?有可能是一個很好的方法來做到這一點... – Kobi
@Kobi - 我有很多參數的WebService方法,我想轉換它作爲一個列表,並驗證它們以外,如果web服務。我不想一次又一次地重新聲明它們。 Toda – SexyMF