반응형
공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
2019/04/24 - [C#] - C#문법-12 : 이벤트 event
이번 포스팅에서는 전처리기와 Indexer에 대해 공부합니다.
전처리기 지시어 (Preprocesser Directive) :
실제 컴파일 시작 전 컴파일러에게 특정 명령을 먼저 처리하도록
지시하는 것.
모든 전처리기 지시어는 #으로 시작합니다. 우리가 C를 공부할 때
처음 배우는 #define 처럼요. 그리고 문장 끝에 붙는 세미콜론은
붙이지 않습니다.
* 전처리기 지시어는 해당 파일에서만 기능을 발휘합니다.
조건별로 컴파일하기 및 기타 전처리기 지시어들.
#define TEST_ENV2
using System;
using System.Text;
using System.Windows;
namespace workspace_csharp {
public class Program {
#region public methods
public void getUserName(){}
private void getUserAge(){}
#endregion
#region public properties
#endregion
#region privates
#endregion
int getAvg(params int[] point) {
int avg = 0;
for(int i = 0; i < point.Length; i++) {
avg += point[i];
}
avg /= point.Length;
return avg;
}
public static void Main(String[] args) {
Program program = new Program();
bool isTestEnv = false;
#if (TEST_ENV)
//Optional Paramter
Console.WriteLine(program.getAvg(10, 20, 30, 40 ,50));
isTestEnv = true;
#else
Console.WriteLine(program.getAvg(100, 85, 77, 93, 66, 58, 99));
isTestEnv = false;
#endif
if(isTestEnv) System.Console.WriteLine("true");
else System.Console.WriteLine("false");
}
// #undef : #define과 한 세트로 사용됨, define 해제하는 역할
// #elif : #if 와 함께 사용됨 == else if
// #line : 라인 번호를 임의로 변경하거나 파일 이름을 임의로 변경할 때 사용.
// #error : 전처리 시에 Preprocessing을 멈추고 에러 메시지 출력
// #warning : #error 처럼 에러 메시지를 출력하지만, Preprocessing은 멈추지 않음.
}
}
저는 유니티를 위해 C#을 공부 중인데 크게 많이 사용될 것 같지
않아서 여기까지 그냥 전처리기 지시어라는 게 있다.
정도만 알고 넘어가겠습니다.
Indexer (인덱서) : 아래 예제 코드와 주석을 보시면 이해가
되실 겁니다.
using System;
namespace workspace_csharp {
// C# 인덱서 Indexer
// this[] 라는 특별한 문법을 써서 Property 처럼
// get 과 set을 정의합니다.
// 클래스 내부의 어떤 값을 반환하는지는 클래스 작성 시 필요에 따라 정하고
// 반환 데이터 타입도 여러가지로 지정할 수 있습니다.
// * 한 번에 여러 개의 Indexer를 지정할 수 는 없습니다.
class MyIndexer {
private const int LIMIT = 100;
private string name;
private long[] userIds = new long[LIMIT];
public long this[int index] {
get {
if(index < 0 || index >= LIMIT) {
throw new IndexOutOfRangeException();
} else {
return userIds[index];
}
}
set {
if(!(index < 0 || index >= LIMIT)) {
userIds[index] = value;
}
}
}
// public string this[int idx] {
// get {
// return "";
// }
// set {
// }
// }
}
public class Indexer {
public static void Main(string[] args)
{
MyIndexer myIndexer = new MyIndexer();
myIndexer[0] = 20190424001;
long a = myIndexer[0];
}
}
}
이상으로 전처리기와 인덱서에 대해 알아보았습니다.
다음 포스팅에서는 접근 제한자에 대해 공부합니다.
반응형
'C#' 카테고리의 다른 글
C#문법-15 : 클래스 상속 (0) | 2019.04.25 |
---|---|
C#문법-14 : 접근 제한자 public, interal, protected, private (1) | 2019.04.25 |
C#문법-12 : 이벤트 event (0) | 2019.04.24 |
C#문법-11 : Nullable Type, 메소드 파라미터 (0) | 2019.04.24 |
C#문법-10 : 클래스 - 메소 드, 프로퍼티, 필드, 이벤트 (0) | 2019.04.24 |