참조 차이 (C# 객체와 C++ 포인터)
·
Programming Languages/C#
int* xp의미는 &int (int 크기의 실제 값[13]이 담긴 공간의 주소값 [0x0012FF44]) int* xp에 담음 일반 변수 포인터 변수 참조 변수 일반 변수는 / 기본적으로 메모리 주소를 1번 참조해서 실제 값을 가져온다. C++ 포인터 변수명, 참조를 참조 변수명 >> ref >> value C++ 참조 변수명, 참조 변수명 >> value C# 객체 변수명, 참조 변수명 >> value : C++ 에서, 일반적으로 array, vector 같은 컨테이너는 생성시, 변수명은 포인터다. (참조의 참조값이다.) 이를 함수내에서 참조 접근하려면, 정의시 *포인터 연산자를, 함수 내의 CRUD는 &주소 연산자로 접근한다. 일반 변수 타입도 같은 방법을 쓴다. : C# 에서 array, list..
[ C#, C++ ] thread, async, Parallel
·
Programming Languages/C#
c++ thread, async 예시 //C++ #include #include // 쓰레드 사용시, client list 벡터 std::vector clientlist; wsa wsa; // 쓰레드 버전 clientlist.push_back(new std::thread(&wsa::client, wsa, sock_connected, clientAddr, &clientlist)); // Async 사용시, client list 벡터 a_clientlist.push_back(std::async(std::launch::async, &wsa::client, wsa, sock_connected, clientAddr, &clientlist)); c++ thread, async 비교 // c++ async std::..
Thread.Sleep & Task.Delay
·
Programming Languages/C#
- Thread.Sleep( ) 코드가 선언된 부분의 해당 쓰레드를 일정시간 멈추는, 시스템(OS) 메서드다 새롭게 쓰레드가 생성되지 않는다. 실행중인 쓰레드를 멈춘다. - Task.Delay( ) 별도의 비동기(쓰레드)가 생성되어 시간만큼 지연시킨다. // 아래와 같이 사용할 경우, await Task.Delay(1000) 과 논리적으로 같은 역할을 한다. Thread t1 = new Thread(() => Thread.Sleep(1000)); t1.Start( ); 예제) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Thread..
3) Task, Task<T>, Parallel, Async
·
Programming Languages/C#
// ramda Task task = new Task( () => PrintMessage() ); task.Start(); 대표사진 삭제 사진 설명을 입력하세요. 1)대리자 + 2)람다 -> 3)비동기 -> 4) .NET 네트워크 C# 스타일에 맞는 네트워크 프로그래밍을 하려면, 비동기(Thread, Task, Async, Parallel) 구조 구현을 이해해야 한다. C# 스타일 비동기 구조 구현을 위해서는, 대리자와 이벤트를 이해해야 한다. C# 에서 대리자와 이벤트의 사용은 사용자 생성 대리자와, func, action 대리자에 람다를사용 할 수 있어야 한다. C#에서 thread 보다 비동기(Task, Async, Parallel) 이 더 효과적이다. 1. TPL (Task Parallel Lib..
2) Lamda
·
Programming Languages/C#
사진 삭제 사진 설명을 입력하세요. 1)대리자 + 2)람다 -> 3)비동기 -> 4) .NET 네트워크 C# 스타일에 맞는 네트워크 프로그래밍을 하려면, 비동기(Thread, Task, Async, Parallel) 구조 구현을 이해해야 한다. C# 스타일 비동기 구조 구현을 위해서는, 대리자와 이벤트를 이해해야 한다. C# 에서 대리자와 이벤트의 사용은 사용자 생성 대리자와, func, action 대리자에 람다를사용 할 수 있어야 한다. 기본적으로 람다는 쓰지 않는다. C#을 제외하고 디버깅이 힘들다. 한번 쓰고 두번 다시 쓰지 않을 경우, 3줄 이하의 코드에서만 쓴다. 1. 람다식과 대리자로 만드는 무명 메서드 2. Statement Lambda (매개변수_목록) = > { 문장1; 문장2; 문장3..
1) Delegate
·
Programming Languages/C#
사진 설명을 입력하세요. 1)대리자 + 2)람다 -> 3)비동기 -> 4) .NET 네트워크 C# 스타일에 맞는 네트워크 프로그래밍을 하려면, 비동기(Thread, Task, Async, Parallel) 구조 구현을 이해해야 한다. C# 스타일 비동기 구조 구현을 위해서는, 대리자와 이벤트를 이해해야 한다. C# 에서 대리자와 이벤트의 사용은 사용자 생성 대리자와, func, action 대리자에 람다를사용 할 수 있어야 한다. : C#은 객체지향 프로그래밍 언어다. : Delegate(대리자)또한, 함수를 객체화시켜 다형성을 이루는 하나의 방법일 뿐이다. C# delegate 참고 링크1 - Delegate 1. Noun (집단의 의사를 대표하는) 대표(자) 2. Verb (권한업무 등을) 위임하다 ..
18 File
·
Programming Languages/C#
18.1. 파일과 폴더를 다루는 방법 - File : 저장 매체에 기록되는 데이터의 묶음 - Directory(Folder) : 파일이 위치하는 주소 - System.IO 의 클래스 - 주요 메소드와 프로퍼티 18.2. 파일의 "내용"을 읽고 쓰는 방법 - Stream : 네트워크나 데이터 백업 장치의 데이터 입/출력 구조 : 순차 접근 구조 - System.IO.Stream : 추상 클래스 - C# CLR Byte Order : Little Endian (vs. Java JVM: Big Endian) 18.3. using : 네임스페이스, 파일, 소켓 등 - UsingDeclaration : 별칭 - 자동 Dispose() 18.4. BinaryWriter/BinaryReader : 스트림에 이진 데이..
16 Reflection, Attribute 17 Dynamic
·
Programming Languages/C#
16. Reflection & Attribute - 객체 정보를 데이터화 : 프로그램 실행 중에 형식 이름, 프로퍼티 목록, 메소드 목록, 필드, 이벤트 목록 등 읽을 수 있다 - 리플렉션 다형성 : 읽어들인 형식의 인스턴스를 만들고 프로퍼티나 필드에 값을 할당하고, 메소드를 호출할 수 있다 - 리플렉션 내보내기 : 프로그램 실행 중에 새로운 형식을 만들어낼 수 있다 - 에트리뷰트 : 리플렉션 값 사용 16.1. Object.GetType() : 객체의 메타데이터를 리턴한다. - Object 클래스 : Object는 모든 데이터 형식의 조상 : 즉, 모든 Type 은 Object 형식이다. - Object 클래스의 메서드 : 반드시 인스턴스 필요(클래스 X) : Object.Equals( ) : Obje..
14 Lamda 15 LINQ
·
Programming Languages/C#
14. Lamda - 람다식으로 만드는 익명 메소드, Anonymous Function(무명 함수) - 함수를 변수에 대입 14.1. 람다식 선언 매개변수_목록 => (식) 14.2. Statement Lambda (매개변수_목록) = > { 문장1; 문장2; 문장3; ... } 14.3. Func, Action - delegate 대리자 선언부 생략 방법 - func 대리자, 결과를 반환하는 메소드 참조 - action 대리자, 결과를 반환하지 않는 메소드를 참조 14.4. Expression Tree - System.Linq.Expressions - Expression 클래스와 파생 클래스들 - 각 노드 타입 상관 없이 Expression 형식 참조 선언 가능 - expression tree = st..
12 Exception 13 Delegate Event
·
Programming Languages/C#
12. Exception 12.1. Exception - System.Exception : 예외 최상위 클래스 : 모든 예외를 받아낸다 : 모든 예외를 처리함으로써, 새로운 오류 발생할 수있다 - throw : 의도적 예외 발생 - finally : try 블록의 예외 발생으로 catch 실행시, 자원 해제와 같은 코드를 미처 실해하지 못한 경우 사용 : catch 문 모두에 반복 작성하는 것보다 finally가 효과적 : 예외에 상관없이 반드시 finally 절의 코드를 실행 : finally 내부 try ~ catch 가능 - User Defined Exception : Exception 클래스를 상속 12.2. Exception Filter - catch 예외 제약 조건 : when 키워드 : if..
10 Collection, Indexer 11 Generic
·
Programming Languages/C#
10.1. Array - 변수와 배열 : 300개의 변수 대신, 300개 용량을 가진 배열 변수를 “한 개”만 선언해서 사용 - 배열 선언과 초기화 : { }, Collection Initializer : 필요한 용량에 맞는 Array를 선언 - 다차원 배열 (2차원) 선언과 초기화 : (세로, 가로) : 1차원 배열을 원소로 갖는 배열 - 가변 배열 (Jagged Array) : 10.2. System.Array - C# 에서 모든것은 객체다 : 배열은 System.Array 클래스의 파생형이다 - System.Array 클래스의 주요 메서드와 프러퍼티 - System.Range 객체를 이용한 배열 분할 10.2. Collection - ArrayLIst : 배열과 달리 생성시 용량을 지정할 필요가 없..
08 Interface 09 Property
·
Programming Languages/C#
8. Interface * 왜 쓰는지를 궁금해하는 사람이 많다면, "왜 잘못 사용되고 있는지", "어떻게 하면 제대로 사용될지"를 고민할 것 No. Cat. Class Abstract Class Interface 1 목적 OOP 직접 인스턴싱 금지 추상 매서드 오버라이딩 필수 동일한 메서드를 가진 객체 보장 다중 상속 2 기본 한정자 private private (추상 메서드: public) public 3 인스턴싱 O X X 4 구현부 O (필수) O (선택) X (기본 구현체 예외) 5 중첩 상속 O (클래스 > 클래스) O (추상 클래스 > 추상 클래스) O (인터페이스 > 인터페이스) 6 다중 상속 X (Containment) X O (중복될 구현부가 없다) 7 참조형 선언 O (Object ob..
ubiquitous4g