C# 프로그래밍 개념(30)
-
C#의 메모리(함수까지)
메모리는 C#을 배워야 하기 때문에 알아야 하는 거는 아니고 모든 프로그램의 근간이 되는 지식이다. 모든 프로그램은 공짜는 없다. 메모리를 지불하기 때문에 메모리 구조를 아는 것은 코드의 동작 원리를 아는 것과 같다. 객체를 만들었다는 건 메모리를 지불한다는 것이다. 램이라는 것은 이진수로 되어 있는데 이런 게 예를 들어 램이 4기가면 4기가바이트 어치나 있다. 램 위에 올라가는 게 운영체제(OS)가 있다. 우리가 만든 프로그램이 차지하는 램 공간은 사실 매우 작다. 우리가 만든 프로그램은 4개의 영역으로 나뉜다. 코드 / 데이터 / 힙 / 스택으로 나뉜다. 각자 들어가는 영역이 존재하는데 객체로 만들었을 때 코드 그 자체가 영역에 존재하는 것이다. 상수는 코드 영역에 올라가 있다. 수정이 불가능한 것들..
2023.05.08 -
C# 연산자
= 대입 연산자: 함수에서 리턴된 값이나 연산된 값을 그 값을 받을 수 있는 변수에 넣어줘라. 비교연산자는 두 개의 값을 비교한 뒤에 bool을 리턴한다. 대입연산자가 있으면 오른쪽부터 실행된다. A = b+C면 더하기를 먼저하고 대입연산자가 된다. 산술연산자는 * / %가 먼저된 후에 + - 가 처리가 된다. Bool 논리 연산자 && = AND, || = OR, ^ = XOR, ! = not && = 둘 다의 의미다. 한 개라도 false면 false다. ||는 둘 중의 하나라도 참이면 참이다. 한 개라도 true면 true다. XOR 양 쪽이 다르면 true, 같으면 false가 되는 연산이다. 비교연산자는 둘 중에 어느 것이 더 크고 작냐에 따라 true, false가 반환되고 !표시는 그 반대를..
2023.05.07 -
for과 foreach 비교
for문과 foreach문이 있는데, for는 시작인자와 끝 인자를 입력해야 하고 증가하는 지 감소하는 지 등을 for문에 다 적어놔야 되는데 foreach는 그렇게 까지 할 필요가 없다. For문 = 오류가 나면 오류난 위치 이후로는 안함. foreach문은 비동기라서 에러가 나더라도 멈추지 않고 동작한다. foreach는 향상된 for문으로 가변적 배열이나 리스트 크기를 구할 필요가 없다. foreach의 단점은 반복문 내에서 배열이나 리스트 값을 변경, 추가가 불가능하고 배열을 역으로 탐색할 수 없다. 또한, 삭제하는 메소드에서는 거꾸로(가장 큰 곳부터) 탐색해서 삭제를 해야 하기 때문에 foreach를 쓰지 못한다. 그 이유는 앞에서부터 배열을 탐색하면서 배열을 삭제하면 배열의 크기가 바뀌면서 배..
2023.05.06 -
C# 클래스
C#은 클래스에 사로잡혀 있는 프로그래밍 언어다. 객체지향 프로그래밍의 핵심적인 게 클래스. 클래스를 묶어서 클래스화 시킨다. 객체지향 = 내가 표현하고 싶은 걸 클래스로 만들어서 그 클래스로 객체를 만드는 것이다. 객체로 기반하여 모든 걸 해결하기에 객체지향이라고 할 수 밖에 없다. 클래스는 객체다. 코딩에서도 설계도가 먼저다. 그 설계도의 기본이 되는 게 클래스이다. 클래스의 이름들은 전문적으로 식별자라고 한다. 어떤 코드적 내용을 하나로 묶는 곳. 예를 들어서 class apple { } 하고 선언하면 apple이 식별자. int a = 0; 할 때 a를 식별자라고 하듯이 말이다. 그리고 선언을 함과 동시에 초기값을 넣어주면 그걸 리터럴 초기화라고 부른다. int 형은 4바이트를 차지하는데, int..
2023.05.06 -
네임스페이스, using, 다중 프로젝트
네임스페이스: 성격이 비슷한 클래스, 구조체, 인터페이스 등을 그룹화 한 것이다. 클래스는 동적 클래스, 정적 클래스로 나뉘는데 정적인 것은 field, 동적인 것은 method라고 한다. 네임스페이스는 개념의 표현이라기 보다는 개념의 분류. 개념의 이름이 겹칠 때 그것을 분류할 수 있게 네임 스페이스가 있다. 개념을 정리한 거는 클래스. Using System; > System이라는 네임스페이스를 가져다가 쓰겠다는 것. Console.WriteLine(); > System이라는 네임스페이스로부터 Console이라는 메소드를 가져가서 출력을 시행한다. System이라는 묶음 안에 뭔가 입력되어 있다. 문법도 다 프로그램의 일부분이고 IDE에서 미리 입력되어 있는 코드가 있다. 프로그램 화면에 나오는 모든..
2023.05.06 -
접근제한 지정자 Private & Public & Protected
Private / public private는 동일 패키지에 같은 클래스 접근으로만 가능하다. public은 다른 패키지까지 모두 접근이 가능하다. void를 같이 쓰는데 void는 리턴하는 값이 없다는 의미다. protected는 상속받은 자식만 접근할 수 있다는 것. 그냥 쓰면 private다. Public 전역변수 private 지역변수 이런 식으로 보통 부르기도 한다. 지역변수면 내부에서만 사용이 가능하다. 선언되는 순간 지역변수는 메모리화 되고 끝나면 사라지는 것. 객체지향의 캡슐화, 은닉화를 대표하는 문법 = 접근 제한 지정자. 코드를 입력할 때 만들어 놨는데 식별자에 .을 찍어도 안나오면 접근제한 지정자 문법을 사용하지 않아서 IDE 환경에서 안 나오는 것이다.
2023.05.05