728x90 반응형 Program Language/C#39 C# 고정소수점 키워드 : decimal decimal 부동 소수점과 다르게 고정 소수점 숫자를 나타내는 자료형이다. 정확한 소수점 계산이 필요한 금융, 세금, 계산 등과 같은 분야에서는 decimal을 자주 사용한다. 최대 28자리의 숫자를 나타낼 수 있으며 부호, 정수, 소수점, 소수점 이하 자릿수를 나타내는 4바이트 정수형 정수부와 소수부를 나타내는 4바이트 정수형 소수부 그리고 소수점 위치를 나타내는 4바이트 정수형 지수부 등으로 구성된다. decimal balance = 100.50m; decimal withdrawalAmount = 20.25m; decimal newBalance = balance - withdrawalAmount; Console.WriteLine($"New balance : {newBalance:C}"); // ba.. 2023. 4. 25. 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. 이전 1 2 3 4 5 6 7 다음 728x90 반응형