0

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

我希望能够遍历传递给的所有参数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
4

2 回答 2

1

将方法的签名更改为:

public bool ExcludeUsers(params string[] omittedUsers)

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

于 2012-12-15T00:30:48.550 回答
0

那么你应该将它作为 OmittedUsers[] 传递,而Array不是string

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;

在您的情况下,在我看来,用户名区分大小写

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

于 2012-12-15T00:34:28.957 回答