목록C# (19)
A-Dyu의 개발 일기장
CS0308,CS0305 오류는 모두 제네릭에 관련된 오류다.CS0308은 제네릭이 아닌 클래스 또는 메서드에서 형식 인수를 사용할 때 일어난다.//일반 클래스class MyClass{ //member valuable, method}class Program{ public static void Main(string[] args){ MyClass myClass = new MyClass();//CS0308 //제네릭 클래스가 아니지만 형식 인수를 사용함 }}CS0305는 반대로 형식 인수가 필요한 클래스 또는 메서드에서 형식 인수 없이 사용했을때 일어난다.//제네릭 클래스class MyClass{ //member valuable, method}class Progr..
리터럴이란 소소 코드상에서 직접적으로 값을 나타내는 고정된 값들을 의미한다.12나 "string"처럼 어떤 값인지 그 자체로 표현하는 모든 식별자를 뜻한다.상수랑 헷갈릴 수 있지만, 리터럴과 상수는 개념적으로 차이가 있다.리터럴은 소스 코드 상에서 값이 고정되며, 표현이 바뀌면 그에 따라 값이 바뀐다.즉 특정 표현은 어떤 코드라도, 어떤 프로젝트라도 절대로 값이 바뀌지 않는다.즉, 이미 소스 코드에 작성한 순간부터 값이 정해진 것이라고 보면 된다.하지만 상수(const)는 컴파일 시점에 값이 결정되며, 컴파일 전까진 값이 유동적으로 변한다.즉 const는 컴파일 시점에 리터럴로 바뀌어 컴파일된다. 실제로 컴파일 된 IL코드를 보면 모든 const값이 리터럴로 바뀐걸 볼 수 있다.리터럴은 다양한 표현식이 ..
C#에서 비트 값으로 플래그를 사용할 때 enum을 사용하여 쉽게 구현이 가능하다.[Flag]enum FlagEnum{ Flag1 = 1, Flag2 = 2, Flag3 = 4,}만약 플래그의 개수가 많아진다면 비트 연산자로 비트를 옮겨 사용할 수 있다. 이것이 가능한 이유는 리터럴과 리터럴의 연산은 컴파일 시간에 계산해 하나의 상수로 컴파일되기 떄문이다.[Flag]enum FlagEnum{ Flag1 = 1 그리고 or 비트 연산자를 사용하여 플래그를 지정해 사용한다. 만약 특정 플래그를 포함하는지 확인하려면, HasFlag 메소드를 사용하면 된다.FlagEnum flag = FlagEnum.Falg1 | FlagEnum.flag2;flag.HasFlag(FlagEnum.Flag1..
C# 9.0부터 추가된 최상위 문을 사용할때 처음 보는 오류가 일어났다.그래서 자주 본 오류들 이유와 해결 방법들 기록함. CS8801이건 최상위 문에서 선언된 변수를 다른 클래스에서 접근할때 일어난다.int i = 10;pubilc class Test{ void method() { i = 10; //CS8801 }}그 이유는 결국은 최상위 문도 진입점이 있는 클래스로 변환되는데, 선언되는 변수들은 결국 Main 메서드의 지역변수로 선언되는것이기 때문이다.pubilc class Program{ static void Main(string[] args) { int i = 10; }}pubilc class Test{ void method() ..
List클래스같이 클래스의 값에 접근할때 인덱스로 접근하고 싶을 떄가 있다.그럴 떄 인덱서를 사용하며 클래스를 프로퍼티 형식으로 인덱싱할 수 있다.public class MyClass{ private int[] intArray = { 1,2,3,4,5 }; public int this[int i] { get { return intArray[i]; } set { intArray[i] = value; } }}인덱서는 간단히 인자가 있는 속성(프로퍼티)라고 생각하면 된다.getter와 setter로 구분되며, 대괄호 안에 받아오는 매개변수로 구분된다. ..
C#의 System.Math을 상요할 때 가장 많이 쓰이는 게 반올림, 올림, 내림, 버림 기능인데, 어떻게 사용하는지 알아보겠다.1.올림Console.WriteLine(Math.Ceiling(1.4)); //2Console.WriteLine(Math.Ceiling(-1.5));//-12.내림Console.WriteLine(Math.Floor(1.4)); //1Console.WriteLine(Math.Floor(-1.5));//-23.버림Console.WriteLine(Math.Truncate(1.4)); //1Console.WriteLine(Math.Truncate(-1.5));//-1버림과 내림의 차이는 바로 음수에서 나오는데,내림은 말 그대로 음수면 1을 내리지만 버림은 소수점을 무시한다.4.반올림..
List에 요소를 추가, 수정, 삭제하는법1.추가List list = new List();list.Add(3); //list 맨 끝에 삽입list.Insert(0, 1);//list 시작 부분에 삽입list.Insert(1, 2);//list 중간에 삽입 2.수정가장 간단하다list[1] = 5;//두 번째 요소를 5로 바꿈3.삭제list.Remove(1); //특정 값을 제거(중복된다면 가장 첫번째를)list.RemoveAll(3); //특정 값을 모두 제거list.RemoveAt(0);//첫 번째 요소를 제거