Dictionary<Key, Value> 형태로 쓰게되는데


Key값으로 Loop(반복문)를 돌리고


해당Key만 삭제하면 된다.



foreach(string sKey in Dictionary.Keys.ToList())

{

      // Dictionary.Keys[sKey] == value;  <- Key로 찾은 Value

      Dictionary.Remove(sKey);           <- Key를 이용해서 Value 삭제

}



'Programming > C#' 카테고리의 다른 글

Virtual, Abstract, Interface  (0) 2017.11.06
DataSource Binding 방법  (0) 2017.10.31
캐스팅 as, is  (0) 2017.06.30
DataGridView 스크롤시 열 고정, 구분자  (0) 2016.12.22
Enum에서 정한 Name을 index로 가져오기  (0) 2016.12.22
블로그 이미지

SherryBirkin

,

캐스팅 as, is

Programming/C# 2017. 6. 30. 15:37

개체는 다형성이므로 기본 클래스 형식의 변수는 파생 형식을 가질 수 있습니다. 


파생 형식의 메서드에 액세스하려면 값을 파생 형식으로 다시 캐스팅해야 합니다. 그러나 이러한 경우 단순한 캐스팅을 시도하려면 <xref:System.InvalidCastException>이 throw될 수 있는 위험을 감수해야 합니다. 


이 때문에 C#은 is 및 as 연산자를 제공합니다. 이러한 연산자를 사용하면 예외를 throw시키지 않고 캐스트 성공 여부를 테스트할 수 있습니다. 

일반적으로 캐스트가 성공하면 실제로 캐스트 값을 반환하는 as 연산자가 훨씬 효율적입니다.


 is 연산자는 부울 값만 반환합니다. 따라서 이 연산자는 개체 형식을 결정하고 실제로 캐스트하지는 않는 경우에 사용할 수 있습니다.


as를 사용했을때 int, double, float등에 Null값을 넣을수 없지만

int? a  = 변수면 as int?;

앞뒤로 ?를 붙여주면 변수에 null값이 들어가게 된다.


class SafeCasting { class Animal { public void Eat() { Console.WriteLine("Eating."); } public override string ToString() { return "I am an animal."; } } class Mammal : Animal { } class Giraffe : Mammal { } class SuperNova { } static void Main() { SafeCasting app = new SafeCasting(); // Use the is operator to verify the type. // before performing a cast. Giraffe g = new Giraffe(); app.UseIsOperator(g); // Use the as operator and test for null // before referencing the variable. app.UseAsOperator(g); // Use the as operator to test // an incompatible type. SuperNova sn = new SuperNova(); app.UseAsOperator(sn); // Use the as operator with a value type. // Note the implicit conversion to int? in // the method body. int i = 5; app.UseAsWithNullable(i); double d = 9.78654; app.UseAsWithNullable(d); // Keep the console window open in debug mode. System.Console.WriteLine("Press any key to exit."); System.Console.ReadKey(); } void UseIsOperator(Animal a) { if (a is Mammal) { Mammal m = (Mammal)a; m.Eat(); } } void UseAsOperator(object o) { Mammal m = o as Mammal; if (m != null) { Console.WriteLine(m.ToString()); } else { Console.WriteLine("{0} is not a Mammal", o.GetType().Name); } } void UseAsWithNullable(System.ValueType val) { int? j = val as int?; if (j != null) { Console.WriteLine(j); } else { Console.WriteLine("Could not convert " + val.ToString()); } } }

블로그 이미지

SherryBirkin

,

■ 정규표현식
    정해진 패턴을 사용해서 패턴에 일치하는 데이터 검색을 지원하는 표현식

 

■ 정규표현식에 쓰이는 특수문자
   1. '.'
      임의의  문자
      ex) s.e -> sae, sbe, sce, sde ...
          .ce -> ace, kce, dce ...
 
   2. '*'
      바로 앞의 문자가 없거나 하나 이상
      ex) s*e -> e, se, see, ssse ...
          abc* -> ab, abc, abcc, abccc ...
          h*im -> im, him, hhim, hhhim ...

 

   3. '+'
      바로 앞의 문자가 하나 이상
      ex) s+e -> se, sse, ssse ...

 

   4. '?'
      바로 앞의 문자가 없거나 하나
      ex) th?e -> e, the 이 두가지표현이 유일하겠지.

 

   5. '^'      (문자열에 대한 녀석)
      바로 뒤의 문자열로 시작.
      ex) ^The.. 뒷부분부터 공백까지 검사. -> The girl is, Theather
          ^a?bc -> bc, abc ...
          ^.e -> he, me, request, settle ...
          ^s.e?.. e는 나와도 되고 안나와도 되고 -> sa, sae, sb, sbe ...

 

   6. '$'      (문자열에 대한 녀석)
      바로 앞의 문자열로 종료
      ex) a?bc$ -> eeabe, seebc, bc ..
          +.e$ -> onthetoe, bctae, appetittle ...
          s?c+$ -> e, se, ee, eee, seee, seee ...

 

   7. '[]'
      [] 안에 있는 문자 중 하나
      범위는 '-'로 지정
      ex) [ab]cd -> acd, bcd ..
          [a-z] -> 영문 소문자
          [a-zA-Z] -> 영문자........ 자바스크립트에서 어렵게 구현한 녀석들인데 간편하내~
          [0-9] -> 숫자
          ag[a-z] -> aga, agbcd, agzzz ...

          ^ab[cd]ef -> abcef, abdef ...
          ^[a-zA-Z] -> 영문자로 시작....
                       아이디 검사할 때 첫글자가 영문자와 '_' 만 쓰도록 할때는 ^[a-zA-Z_]
          ^[가-힣]  ->  한글로 시작해야 할 때
          [^a-zA-Z0-9]   ->   ^이 안으로 들어가면 제외의 의미가 된다는거~ 부정의 의미.. 영문자나 숫자로 시작 X
          [a-zA-Z0-9]$ -> 영문자나 숫자로 종료

          "[가-힣]"   ->  한글... 완성형만 가능해.. 가령, ㅋㅋㅋ 같은 녀석은 안된다는 거지.
          "[abc]"  ->   이 안에 있는 문자중에 하나. 즉, a b c 중에 하나의 문자란 말이지.
                        C#문법으로 치면 ("a" || "b" || "c")와 같은 개념이야..


    8. '{}'
       {} 앞의 문자나 문자열 출현 횟수, 스키마에서 min/maxoccur과 같은 개념으로 이해하렴.
       ex) a{2}b -> aab ... a가 꼭 2번 나와야 한다는 뜻.
           a{2,}b -> aab, aaab, aaaab ...  a가 최소 2번 이상 나오도록 하라는 뜻.
           a{2, 3}b -> aab, aaab   ... a는 최소 2번 최대 3번 나오도록 하라는 뜻.

 

    9. '()'
       ()안에 있는 문자를 그룹화
       ex) a(bc){2} -> abcbc  ... a다음 bc가 2번 나와야 한다는 뜻..
           a(bc)* -> abcbcbc ...  a다음 bc의 출현횟수는 무한대가 가능하다는 뜻.

 

    10. '|'
        or 연산자.......
        영어로만 아이디를 만들어라?      [a-zA-Z]+    공백이 없는 영어단어
        ex) he|she -> he, she is..
            (he|she)is -> heis, sheis ...


    11. 특수 문자 사용
        ^  []  $  ()  |  *  +  ?  {}  \
        앞에 \ 붙여서 사용
        ex) \*+  -> * 가 하나 이상 포함된 패턴...... * 나 ** 나 *** 별이 무한대로 계속도 가능하고 말야.

            \d : 순수한 숫자, 정수값, 0-9
            \d{2,3}-/d{3,4}-/d{4}  :   전화번호를 찾는 정규식이야... 여기서 하이퍼는 그냥 하이퍼(-)야.
                                       -? 하이퍼뒤에 물음표가 있으면 하이퍼가 있어도 되고 없어도 된다는 뜻.
            \D : 숫자가 아닌 나머지 모든 얘.
            \w : [a-zA-Z0-9] 의 줄임표현.
            \W : [^a-zA-Z0-9] 영문자와 숫자만 아니면 된다는 뜻.
            \s : 공백
            \S : 공백이 아닌 나머지 얘들.
      

 

     12. 문제
         1) 4.6% 라는 걸 찾겠다.
               [0-9]{1,3}\.?[0-9]*%

 

         2) 전화번호를 찾자.
                \d{2,3}-\d{3,4}-\d{4}
             [0-9]{2,3}-[0-9]{3,4}-[0-9]{4}


 

         3) url 주소를 가져와보자.
                http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?

 

         4) 이름 : ( textBox    )
                [가-힣]{2,5}     ->   한글을 최소 2~5까지 입력가능하다는 뜻.

 

         5) 나이 : ( textBox    )
                [0-9]{1,2}       ->   숫자가 최소 1~2까지 입력가능하다는 뜻.
                1?[0-9]?[0-9]

 

         6) 민증번호
                [0-9]{6}-[0-9]{7}
             [0-9][0-9][01][0-9][0123][0-9]-[12][0-9]{6}



http://funny7103.blog.me/90027820184


'Programming > Standard' 카테고리의 다른 글

UML (Unified Modeling Language)  (0) 2017.11.06
블로그 이미지

SherryBirkin

,