簡體   English   中英

遍歷作為參數傳遞給某個方法的變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM