목록언어 (69)
Machineboy空
메소드 오버로딩이란?하나의 메소드 이름에 여러 개의 구현을 올리는 것메소드 호출 코드에 사용되는 파라미터의 수와 형식을 분석해서 알맞은 메소드 형식을 불러준다.int Plus(int a, int b){ return a + b;}double Plus(double a, double b){ return a + b;}int result1 = Plus(1,2); // int를 매개변수로 하는 위 함수를 호출double result2 = Plus(3.1,2.4); // double을 매개변수로 하는 아래 함수를 호출메소드 오버로드 규칙number of parameter 혹은 type of parameter 중 하나라도 달라야 한다.based on return type인 오버로딩 함수는 없다.오로지 파라미터로만..
IDisposable을 활용한 resource-cleanup 자원해제use the IDipose interface to signal that some object's resource or other program state needed to be released or reset when the object was no longer requiredrelying on the garbage collector would not achieve this or provide the required level of control가비지 컬렉터더 이상 사용되지 않는 객체를 자동으로 메모리에서 제거하는 역할.메모리 누수를 방지하고 사용가능한 메모리를 확보할 수 있다.하지만 이러한 가비지 컬렉터는 데이터 베이스 연결이나, 네..

형식 변환(Type Convension)과 캐스팅(Casting)Casting and type convension are different ways of changing an expression from one data type to another.Cast Operator() // (int), (Random) 같은 형식의 것들long l = 1000L;int i = (int)l;object o = (int)l;Random r = (Random)o; // 이건 안되거든 is를 사용한 casting이 필요 if types are not compatible, an instance of InvalidCastException is thrown형식이 호환되지 않으면 예외가 발생한다.숫자의 경우: 변환된 값을 받는 ..
부동 소수점 형식(Floating Point type)소수점이 고정되어 있지 않고 움직이면서 수를 표현한다.소수점을 이동해 수를 표현하면 고정했을 때보다 더 제한된 비트를 이용해서 훨씬 넓은 범위의 값을 표현할 수 있기 때문3.14, 11.08 등과 같은 소수소수점을 표현하기 위해 일부 비트를 사용하기 때문에(게다가 부호도 표현해야 한다) 같은 크기의 정수 계열 형식과 같은 크기의 수를 표현할 수 없다.산술 연산 과정이 정수 계열 형식보다 복잡해서 느리다.float, doubleIEEE754 C#의 float과 double은 IEEE754라는 표준 알고리즘에 기반한 데이터 형식4byte(32bit)의 float형식의 수를 표현할 때1 bit : 부호 전용23 bit: 기수부: 수를 표현8bit: 지수부:..

오버플로우(Overflow)란?변수는 데이터를 담는 그릇과 같다.그릇에 용량 이상의 물을 담으면 넘치는 것 처럼, 변수에도 데이터 형식의 크기를 넘어선 값을 담으면 넘친다.각 데이터 형식의 최대값을 넘어가는 데이터를 저장하려고 할 때 발생uint a = uint.MaxValue; // 4294967295a = a + 1; // 0wrap around under these circumstances. 오버플로 되면 다시 최소값부터 시작되어 할당된다. checked 키워드정수형의 overflow를 감지하고 예외를 발생시키는 것int one = 1;checked{ int expr = int.MaxValue + one; // OverflowException is thrown}int expr2 = c..
프로퍼티(Property)의 이점객체지향 언어라면 모름지기 '은닉성'을 표현할 수 있어야 한다.객체의 데이터가 의도하지 않게 오염되는 것을 막아야 하기 때문. 클래스를 작성하다가 필드를 public으로 선언해버리고 싶은 충동이 들 때가 있다.여차하면 의도하지 않게 데이터가 오염될 수 있다. 프로퍼티를 이용하면 은닉성과 편의성을 모두 잡을 수 있다.프로퍼티(Property)의 기능을 메소드로 표현한다면?class MyClass{ private int myField; // 값은 private로 은닉성을 지키면서 public int GetMyField() // get과 set은 public으로 편의성을 가진다. { return myField; } public..
프로그램이 비정상적인 상황을 만났을 때 이를 처리하는 예외 처리예외(Exception) : 프로그래머가 생각한 시나리오에서 벗어나는 사건예외 처리(Exception Handling) : 예외가 프로그램의 오류나 다운으로 이어지지 않도록 적절하게 처리하는 것예외를 처리하지 못해 죽는 프로그램은 아무리 기능이 많아도 신뢰할 수 없다.System.Exception 클래스와 throwall exeptions have System.Exception class as their base typecontains Message, reason for the exception being thrown모든 예외는 System.Exception 클래스를 상속하고, 사람이 읽을 수 있는 형태의 예외 원인 메시지를 던진다.예) Ou..

is 연산자지정된 형식과 호환되는지 확인int i = 27;object iBoxed = i;Console.WriteLine(isBoxed is int); // TrueConsole.WriteLine(isBoxed is long); // Falseas 연산자지정된 형식으로 변환IEnumerable numbers = new List() {10,20,30};IList indexable = numbers as IList;if(indexable != null){ Console.WriteLine(indexable[0] + indexable[indexable.Count -1]) // 10 + 30 = 40}예제using System;using System.Collections;using System.Collect..