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

Array次に、代わりにstring値のOmittedUsers[]として渡す必要があります

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 に答える