2013-11-07 3 views
1

Page.aspx:Динамическая длина аргументов метода

<a href="#" <%= ToggleUiVisibility(new List<bool>() { true, true, false }) %> > 
    link 
</a> 

C#:

public string ToggleUiVisibility(List<bool> conditions) 
{ 
    return conditions.Any(x=>!x) ? "style=\"display:none;\"" : string.Empty; 
} 

Я хотел бы знать, если это возможно, чтобы сделать что-то вроде (псевдо код)

ToggleUiVisibility(true, true, argsN); 

public string ToggleUiVisibility(args) 
{ 
    // make sure each argument is a bool and trigger the same 
    // functionality as above 
} 

ответ

5

Использовать params Ключевое слово:

public string ToggleUiVisibility(params bool[] values) 
{ 
    // make sure each argument is a bool and trigger the same 
    // functionality as above 
} 

, а затем вы можете назвать ваш метод, как:

ToggleUiVisibility(true, false, ...); 
2

Вы можете использовать params:

public string ToggleUiVisibility(params bool[] conditions) 
{ 
    return conditions.Any(x=>!x) ? "style=\"display:none;\"" : string.Empty; 
} 

, но тогда ваш вызова код будет прописать каждый параметр отдельно или обернуть их в массив:

ToggleUiVisibility(true, true, false); // works 

ToggleUiVisibility(argsN); // works 

ToggleUiVisibility(true, true, argsN); // does not work - you'll need to "merge" the individual values and the array 

ToggleUiVisibility((new bool[] {true, false}).Concat(argsN).ToArray()); // works 
+0

Так что 'ToggleUiVisibility (arrayOfBools)' будет работать? – Johan

+0

@Johan совершенно. –

+0

Полезно знать, спасибо за расширение ответа gzaxx. – Johan

Смежные вопросы