728x90 반응형 Program Language71 C# Yes or No 키워드 : bool bool 영국의 수학자 겸 논리학자인 조지 불의 이름에서 유래되었다. bool은 참과 거짓의 값을 저장하는 변수타입으로 논리 자료형이라고도 한다. 프로그래밍 언어마다 다르지만 true, false는 정수형 1, 0과도 대응된다. 조건문과 논리 연산자 등에서 많이 사용된다. 조건문 bool isDone = true; if (isDone) { Console.WriteLine("작업 완료"); } 논리 연산자 && (and) : 좌항과 우항이 모두 true일 때 true를 반환한다. ||(or) : 좌항과 우항 중 하나라도 true이면 true를 반환한다. !(not) : 피연산자의 값을 반대로 반환한다. int x = 10; bool b1 = ( x > 5 ) && ( x < 20 );// b1 == tru.. 2023. 4. 25. C# 변수 동기화 키워드 : volatile volatile 변수의 값을 캐시에 저장하지 않고 항상 메모리에서 값을 읽어오도록 한다. 멀티 스레딩 환경에서 여러 스레드가 동시에 하나의 변수에 접근할 때 캐시에 저장된 값과 메모리의 실제 값이 일치하지 않아서 오류가 발생할 수 있다. int counter = 0; void IncrementCounter() { for (int i = 0; i < 100000; i++) { counter++; } } void DecrementCounter() { for (int i = 0; i < 100000; i++) { counter--; } } void Main() { Thread t1 = new Thread(IncrementCounter); Thread t2 = new Thread(DecrementCounter).. 2023. 4. 25. C# 안전하지 않은 키워드 : unsafe unsafe 뜻 그대로 안전하지 않은 코드를 명시할 때 사용하는 키워드이다. C#에서 모든 메모리 영역은 가비지 컬렉터에 의해서 관리되는데 관리를 벗어난 영역에 작업을 수행하기 위해서 사용한다. 따라서 C#에서 관리하는 기능을 사용하지 않고 직접 관리하는 코드를 사용하겠다는 것을 명시하여 해당 코드를 GC관리로부터 벗어나도록 할 수 있기 때문에 더 자유롭게 메모리 컨트롤이 가능하게 된다. 자유로워진 만큼 메모리 할당과 해제를 모두 직접 구현해야 하며 해당 문제로 에러가 발생하면 메모리 누수, 버퍼 오버플로, 세그먼트 폴트 등 치명적인 결함이 발생하게 된다. 발생하는 문제가 치명적인만큼 이를 다루기 위해서 unsafe 키워드를 통해서 반드시 명시된 경우에만 제어권을 얻게 한다. 기본적으로 unsafe를 사.. 2023. 4. 25. C# 정적 키워드 : static 클래스 멤버를 정의할 때 사용된다. static으로 정의된 멤버는 객체 인스턴스에 속하는 것이 아닌 클래스 자체에 속하게 된다. 즉, 객체가 인스턴스화되기 전에도 해당 멤버에 접근이 가능한데 클래스 자체에 속하기 때문에 클래스 이름을 통해서 직접 호출이 가능하다. class MyClass { public static int myStaticVariable; public static void myStaticMethod(){} } class OtherClass { public void SomeFunc() { MyClass.myStaticVariable = 10; MyClass.mySaticMethod(); } } static 멤버는 모든 인스턴스에 공유되기 때문에 한 객체에서 static 멤버에 대한 수정이 .. 2023. 4. 25. C# 상속 방지 키워드 : sealed sealed 클래스나 메서드를 상속하지 못하도록 하여 오버라이딩을 방지한다. sealed로 선언된 클래스는 다른 클래스에서 상속받을 수 없으며 메서드의 경우 해당 클래스에서만 사용이 가능하다. sealed 클래스 선언 sealed class MyClass { // } 이 클래스는 다른 클래스에서 상속받을 수 없으며 이 클래스를 파생 클래스로도 사용할 수 없다. sealed 메서드 선언 class MyBaseClass { public virtual void MyMethod() {} } class MyDerivedClass : MyBaseClass { public sealed override void MyMethod() {} } MyMethod 함수는 MyDerivedClass에서 오버라이딩되고 이후 sea.. 2023. 4. 25. C# 읽기 전용 키워드 : readonly readonly 변수 앞에 위치하면 해당 변수는 읽기 전용이 되어 해당 변수가 정의된 클래스나 구조체, 메서드 등에서만 수정이 가능하며 readonly로 선언된 변수는 선언할 때 또는 생성자에서 값을 할당해야한다. public class MyClass { readonly int myReadOnlyInt; public MyClass(int value) { myReadonlyInt = value; } } 위 코드에서 myReadOnlyInt는 읽기 전용으로 선언되었기 때문에 생성자에서 값을 할당한 이후에는 변경이 불가능하다. 상수를 선언한다는 점에서 const와 비슷한데 둘의 차이를 비교할 필요가 있다. const vs readonly 초기화 방법 const와 readonly는 초기화 방법에서부터 차이가 있.. 2023. 3. 30. 이전 1 ··· 6 7 8 9 10 11 12 다음 728x90 반응형