[英]loop through variables passed to some method as parameters
這是我第一次使用這種動作...使用帶有方法和類似東西的循環。
我希望能夠遍歷傳遞給ExcludeUsers()
所有參數
說我有一些字符串類型值,
string user1 = "Anna";
string user2 = "Brenda";
string user3 = "John";
string user4 = "Warren";
public bool ExcludeUsers(string OmittedUser1, string OmittedUser2, string OmittedUser3)
{
string userName = "John";
// i want to loop through all parameters passed in ...
// something like this
foreach (string param in params)
{
if(userName == param)
return false;
}
return true;
}
然后我想能夠使用
if(ExcludeUsers(user1, user2, user3))
//do some work
將方法的簽名更改為:
public bool ExcludeUsers(params string[] omittedUsers)
然后通過foreach
循環迭代參數。
那么您應該以OmittedUsers []的形式傳遞它,而不是string
值的Array
public bool ExcludeUsers(string[] OmittedUsers)
{
string userName = "John";
bool ConditionMet = true;
foreach (string userToOmmit in OmittedUsers)
{
ConditionMet = string.Compare(userName, userToOmmit) == 0;
if (ConditionMet)
return false;
}
return ConditionMet;
}
然后,您可能想要像這樣使用它:
if(ExcludeUsers(new string[]
{
user1,
user2,
user3,
user4
}
)
)
{
//do some work here...
}
您還想考慮一下您嘗試比較的string
s是否也可能具有大寫字母,
因此,在比較一般..中的字符串值時,應該使用.ToLower()
。
盡管實際上取決於字符串是否區分大小寫。
例如
如果情況是,“ABC”是有效存在“ABC”和“ABC”(這意味着你的string
是不區分大小寫 )
那么您應該在這種情況下使用:
//when "abc" = "ABC" is valid (case Insensitive)
ConditionMet = string.Compare(userName.ToLower(), userToOmmit.ToLower())== 0;
字符串值是否區分大小寫:
//if the string "abc" = "Abc" is NOT the same for you, then
ConditionMet = string.Compare(userName, userToOmmit) == 0;
而你的情況似乎對我來說,一個用戶名是大小寫敏感的
...所以您知道您的選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.