코드를 작성하다 보니
이런경우가 많은거 같더라구요


if(A == "A" || A == "B" || A == "C")
{

}

사실 A라는 변수를 세번 비교를 하는건데...
이게 뭐 크게 불편한건 없지만.
좀 편하게 할수는 없을까 싶어서 생각해보다가
함 만들어봤습니다...(엉망입니다..)

일단 제가 사용한게 string을 비교한거라서
그냥 string에 확장메서드로 만들었구요
(원래는 and나 or에 대해 다 되게 해보려고 했는데 걍 or만 해서..)
orIn이라고 했습니다.(in은 sql에서 사용하는 in 느낌으로......)

public static bool orIn(this string str, List values)
{
      values.RemoveAt(0);
      if (values.Count > 0)
          return str == values[0] || str.orIn(values);
      else
          return false;
}

확장메서드라서 public static이구요..

사용할때는

if (tempStr.Text.orIn(new List {"", "R", "U" }))
{
        //작업
}

이렇게 해줍니다.
파라미터는 List<string>형식이고. (단점은!!) 첫 문자는 필요없는 값이여야 합니다.........

받아온 List<string>의 첫번째 녀석을 계속 없애변서 재귀로 돌리기 땜시...

그리고 또.
제가 알기로는
or가 여러개 있는경우등에서는
첫번째 or에서 값이 true가 나오면 뒤에는 무시한다고 알고 있는데

이 경우에는 끝까지비교를 하기 때문에... 연산이 더 길어져서... 손해가....

그래도
만약 A라는 string변수를 상당히 많은 양의 string값들과 비교할 경우에는 코드양을 조금 줄일수 있지 않을까 싶네요..
(물론.. 모두 or로 연결되어야 합니다...)
by 피요히코~ 2010. 5. 11. 17:04
| 1 |