본문 바로가기

Develop/C#

(3)
VC# Friend assembly friend assembly 에 대해 불과 몇분전에 알았다. 개별적으로 정의가 가능한 StrongNameIdentityPermission 클래스를 통해서도 공유할 수 있지만 차이점이 있다. MSDN 발췌. 1. friend 어셈블리는 전체 어셈블리에 적용되는 반면 StrongNameIdentityPermission은 개별 형식에 적용됩니다. 2. A 어셈블리에 B 어셈블리와 공유하려는 형식이 매우 많은 경우에는 일일이 StrongNameIdentityPermission을 사용하여 지정해야 하지만, friend 어셈블리를 사용하면 friend 관계를 한 번만 선언하면 됩니다. 3. StrongNameIdentityPermission을 사용하는 경우에는 공유하려는 형식은 public으로 선언되어야 합니다. ..
읽기 좋은 코드와 나쁜 코드 읽기 쉬운 코드를 작성하기란 결코 쉬운 작업이 아니다. 컴퓨터가 이해할 수 있는 코드는 어떤 방식이 되든 문법만 맞는다면 전혀 문제 없이 작동하게 된다. 그러나 내가 작성한 것을 다른 사람이 본다면 참 쉽지 않을 것이다. 프로젝트를 여기 저기 다니다 보면 하던 것을 맡을 때도 신규로 새로 할 때도 있다. 대체로 하던 것은 받은 사람은 앞에 작성한 것에 대한 질타와 "왜 이렇게 했지? 무슨 뜻이지?" 등등 자기와의 코딩 방식이 달라서 각종 이야기가 나온다. 왜 그럴까? 공부 해왔던 방법이나 사용하는 방식, 그리고 가장 큰 이유는 프로그래밍 철학이 달라서 일 것이다. 아래의 코드들은 동일한 역할을 하는 코드들이다. 아주 간단하게 숫자 둘 중에 큰 수를 반환하는 함수이다. 예제 1) 예제 2) 어떤 것이 맘에..
Enum 열거형 누군가 나에게 enum 안에 있는 상수 집합을 Loop로 처리 할 수 있는 방법을 물었다. Enum 구조체에 존재하는 GetNames 로 string [] 로 가져 올 수 있다. 해당 타입에 대해서 정의해 줘야 한다. 만약 enum 변수에 대한 것이라면 이렇게도 된다. 반대로 GetValues 도 사용할 수 있다. 딱 보면 알겠지만 enum 의 상수 값의 배열을 반환한다 Int [] iEnumList = Enum.GetValues(testEnum.GetType()); Foreach ( int iEnum in iEnumList) 가 되겠다. Enum 구조체의 네임스페이스는 System 이고 ValueType 을 상속받고 구현된 인터페이스는 IComparable , IFormattable 및 IConvert..