'.NET'에 해당되는 글 38건

  1. 2010.03.28 Sort메소드
  2. 2010.03.27 Delegate-2
  3. 2010.03.27 직렬화
  4. 2010.03.25 AS, IS
  5. 2010.03.25 Catch(Exception)
  6. 2010.03.25 Delegate
  7. 2010.03.24 Foreach문
  8. 2010.03.24 사칙연산 프로그램
2010. 3. 28. 20:10
Sort 메소드를 사용하기 위해서는 CompareTo 함수를 재정의 해주어야 한다.

순서는 아래와같다.

1. 배열을 만들고 ArrayList member;

2. 데이터들을 넣어주고 member.Add(a);

3.소트 함수를 호출한다. member.Sort();



해당 클래스에서 재정의를 해준다.

public int CompareTo(object obj)
            {
                Man m = obj as Man;
                if (m == null)
                {
                    throw new Exception("헐~");
                }
                return name.CompareTo(m.name);
            }

기본적으로 오름차순으로 정렬이된다.

위에는 이름순으로 정렬이된다.

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

Const Vs Readonly  (0) 2010.03.29
Sealed  (0) 2010.03.29
Delegate-2  (0) 2010.03.27
직렬화  (0) 2010.03.27
AS, IS  (0) 2010.03.25
Posted by 아몰라
2010. 3. 27. 10:18

동기 Delegate

1. 우선 Delegate 함수를 만들어준다.
예) delegate void DeleStu(); //여기서 인자를 넣어주면 나중에 Invoke를 호출할때 인자가 추가되서 들어간다.

2. Delegate 객체를 만들어준다.
예) DeleStu sDel = new DeleStu(s.Study);  //만들어주면서 안에 Delegate를 이용해 호출할 함수를 인자로 넣어준다.

3. Delegate를 실행한다.
예) sDel.Invoke();  //만약 처음에 생성해줄대 카운트를 인자로넣었다면! Invoke(3); 이렇게 하면 함수를 3번호출하게된다.


비동기 Delegate

1, 2 같다.

3. Delegate를 비동기로 실행한다.
예) TDel.BeginInvoke(EndTDel, TDel); //첫번째는 호출할 콜백함수 , 두번째는 비동기할 객체
//만약 1번에서 인자를 넣어 주었다면 EndTDel 앞에 인자가 더 생긴다.

TDel.BeginInvoke(3, EndTDel, TDel);  // 이렇게 호출된다면 Tdel를 호출하면 3번을 실행하게된다.

        void EndTDel(IAsyncResult iar) //인자로 비동기할 객체가 들어가는것같다.
        {
            DeleTeacher TDel = iar.AsyncState as DeleTeacher;
            if (TDel != null)
            TDel();
          
            TDel.EndInvoke(iar);
        }

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

Sealed  (0) 2010.03.29
Sort메소드  (0) 2010.03.28
직렬화  (0) 2010.03.27
AS, IS  (0) 2010.03.25
Catch(Exception)  (0) 2010.03.25
Posted by 아몰라
2010. 3. 27. 10:01

예제

    [Serializable]   //클래스위에 이것을 선언해줘야 한다. 파생된 클래스들도 함께~~
    public sealed class SB

직렬화
        public void Serialize()
        {           
            IFormatter formatter = new BinaryFormatter();

Stream streamWrite = new FileStream("MyFile.txt",FileMode.Create, FileAccess.Write, FileShare.None);             
            formatter.Serialize(streamWrite, member);   

            streamWrite.Close();
        }

역직렬화

        public void DeSerialize()
        {
          IFormatter formatter = new BinaryFormatter();

          Stream streamRead = new FileStream("MyFile.txt", FileMode.Open, FileAccess.Read, FileShare.None);
          member = (ArrayList)formatter.Deserialize(streamRead);

          streamRead.Close();
        }

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

Sort메소드  (0) 2010.03.28
Delegate-2  (0) 2010.03.27
AS, IS  (0) 2010.03.25
Catch(Exception)  (0) 2010.03.25
Delegate  (0) 2010.03.25
Posted by 아몰라
2010. 3. 25. 20:25

            is  - 형변환 가능 여부를 bool로 반환해준다. 형변환 가능하면 true를 반환해준다.
예제 

            if ((man is Teacher) || (man is TeacherStu))
            {
                return false;
            }

사람이 선생님 또는 공부하는선생님이면 false를 반환해준다.


예제  

    
     as - 형변환 가능 여부를 확인하고 가능하면 형변환 시켜준다. 형변환이 불가능하면 Null을 반환해준다.


                  Man a = mem as Man;

                if (a != null)
                {
                    if (a.Name == _name)
                        return cnt;
                }

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

Delegate-2  (0) 2010.03.27
직렬화  (0) 2010.03.27
Catch(Exception)  (0) 2010.03.25
Delegate  (0) 2010.03.25
Foreach문  (0) 2010.03.24
Posted by 아몰라
2010. 3. 25. 19:57

try
{
        SB sb = new SB();
}
catch(Exception e)
{
        Console.WriteLine(e.Message);
}
어떠한 에러가 날라오는지 확인할수 있다.

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

직렬화  (0) 2010.03.27
AS, IS  (0) 2010.03.25
Delegate  (0) 2010.03.25
Foreach문  (0) 2010.03.24
사칙연산 프로그램  (0) 2010.03.24
Posted by 아몰라
2010. 3. 25. 10:47

1. 개념

 만약 어떤 기능을 실행하는 메소드를 호출할 필요가 있을때, 그냥 직접적으로 호출하는 형식입니다.

 델리게이트는 호출하는코드랑 호출되는메서드 사이에 있다고 생각하면 됩니다.

 

어떤 메소드를 호출한다고할때.

델리게이트 사용       : 메소드호출 ---> 델리게이트 ---> 호출당하는 메소드

일반적인메소드호출 : 메소드호출 ---> 호출당하는 메소드

 

즉. 메소트호출쪽은 호출되는메소드를 직접 부르는 것이 아니고 델리게이트를 대신 부르게 됩니다.

 

이처럼 중간자(대리자)역활을 합니다.

 

2. 왜 사용하는지

한마디로 유연성입니다.

저도 첨에책으로만 볼땐 그래서 머! 걍호출하면 되지 웨 써 복잡하게라고 생각했었습니다.

예를들어 폼위에 버튼을 올려놓고 클릭을 하게 되면 클릭이벤트로 가게되죠?

이건 마소에서 처음 .net을 개발할때 버튼콘트롤 소스하고 버튼클릭이벤트메소드(예:button1_Click)

를 델리게이트로 연결했기 때문에 우리가 볼땐 콘트롤을 누르면 이벤트메소드로 가는것처럼 보이는겁니다.

뒤에서는 델리게이트가 중간에 연결을 해주고 있죠!

좀이해가 안가시죠. 그럼 어디에 사용하는지 한번 보죠.

 

3. 어디에 사용하는지

이걸 응용하자면 엄청 많을 것 같은데..

1..한번에 10개의 매소드를 실행하고 싶을때.

    10개의 메소드를 전부 호출하는 것이 아니고.

    델리게이트를 걸어서 델리게이트를 한번호출합니다.

  

2..비동기처리에 사용합니다.

    예를들어 어떤 이벤트가 발생되서 실행되는

    A라는 메소드가 있는데 이놈은 한번 실행하면 최소 10분이상걸리는 놈입니다.]

    보통 델리게이트를 사용하지 않았을 경우 이놈이 끝날때까지 기다린후,다른 처리를 하게되는데.

    델리게이트걸어 비동기화 시켜주게되면 일단 실행이 되고,

    실행이 끝나던말든 다음처리를 할수 있습니다.

    이걸,멀티캐스팅이라고 하나요.

 

  ↓비동기처리의 예  

 using System;

delegate void ShowMessageDelegate(string msg);

class Callable {
  internal void ConcreteShowMessage(string msg) {
    System.Threading.Thread.Sleep(5 * 1000);
    Console.WriteLine(msg);
  }
}

class Caller {
  internal ShowMessageDelegate ShowMessage;

  internal IAsyncResult CallDelegate() {
 
    IAsyncResult ret
        = ShowMessage.BeginInvoke("hello, from delegate!",
            new AsyncCallback(Callback), ShowMessage);
    return ret;
  }

  internal void Callback(IAsyncResult ar) {
    ShowMessageDelegate usedDelegate
        = (ShowMessageDelegate)ar.AsyncState;
    usedDelegate.EndInvoke(ar);
  }
}

class App {
  static void Main() {
    Callable callable = new Callable();
    Caller caller = new Caller();

    caller.ShowMessage
        = new ShowMessageDelegate(callable.ConcreteShowMessage);

    IAsyncResult ar = caller.CallDelegate();

    while(!ar.IsCompleted) {
      System.Threading.Thread.Sleep(500);
      Console.Write(".");
    }
    Console.WriteLine("Done.");
  }
}



출처 : 네이버 아이디: dgnom878

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

직렬화  (0) 2010.03.27
AS, IS  (0) 2010.03.25
Catch(Exception)  (0) 2010.03.25
Foreach문  (0) 2010.03.24
사칙연산 프로그램  (0) 2010.03.24
Posted by 아몰라
2010. 3. 24. 16:46
Foreach

배열과 같은 컬렉션(컨테이너)에 있는 각 요소에대해 특정한 구문을 반복
배열, System.Collenctions, IEnumerable, System.Collections.Generic, IEnumerable<T>


ArrayList list;

private static void ExamForeach()        
            
            foreach (Object o  in list) 
            {
                Console.WriteLine(o.Tostring()); //리스트안에 모든 객체들의 Tostring 함수가 실행된다.
            }
        }

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

직렬화  (0) 2010.03.27
AS, IS  (0) 2010.03.25
Catch(Exception)  (0) 2010.03.25
Delegate  (0) 2010.03.25
사칙연산 프로그램  (0) 2010.03.24
Posted by 아몰라
2010. 3. 24. 16:03

namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
           
            Calculator cal = new Calculator();

            Console.WriteLine("수를입력하시오");
            int a = int.Parse(Console.ReadLine());

 //Console.ReadLine은 문자열을 읽어오기때문에 int의 속성에 있는 함수를 통해 형 변환을 시켜준다. 그리고 변수에 대입해준다.

            Console.WriteLine("수를입력하시오");
            int b = int.Parse(Console.ReadLine());

            Console.WriteLine("더하기는~{0}",cal.Add(a, b));
            Console.WriteLine("빼기는~{0}",cal.Sub(a, b));
            Console.WriteLine("나누기는~{0}", cal.Div(a, b));
            Console.WriteLine("곱하기는~{0}", cal.Mul(a, b));
         }
    }
}


namespace test
{
    class Calculator
    {
        public int Add(int a, int b)
        {
            return a + b;
        }
        public int Sub(int a, int b)
        {
            return a - b;
        }
        public int Div(int a, int b)
        {
            return a / b;
        }
        public int Mul(int a, int b)
        {
            return a * b;
        }
    }
}

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

직렬화  (0) 2010.03.27
AS, IS  (0) 2010.03.25
Catch(Exception)  (0) 2010.03.25
Delegate  (0) 2010.03.25
Foreach문  (0) 2010.03.24
Posted by 아몰라
이전버튼 1 2 3 4 이전버튼