循环传递给某些方法的变量作为参数

时间:2012-12-15 00:28:56

标签: c# parameter-passing string-comparison

这是我第一次使用这种动作......使用循环方法和类似的东西。

我希望能够遍历传递给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

2 个答案:

答案 0 :(得分:1)

将方法的签名更改为:

public bool ExcludeUsers(params string[] omittedUsers)

然后通过foreach循环迭代参数。

答案 1 :(得分:0)

然后您应该将其作为OmittedUsers [],Array的{​​{1}}值传递

 
string

然后你可能想要像This:

那样使用它  
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 总的来说..

虽然它确实取决于字符串是否区分大小写。

例如

如果情景是“abc”有效为“ABC”或“Abc”(意味着您的.ToLower()不敏感

那么你应该在那种情况下使用:

string

如果字符串值应区分大小写:

//when "abc" = "ABC" is valid (case Insensitive)
ConditionMet =  string.Compare(userName.ToLower(), userToOmmit.ToLower())== 0;

在您看来,我认为用户名 区分大小写

...所以你知道你的选择。