C#/문법

C# 문법 6

psb08 2024. 11. 26. 10:02
728x90
반응형

1. 접근 제한자

public
:클래스 외부 어디서나 접근 가능합니다.
private
: 선언된 클래스 내에서만 접근 가능합니다.
protected
: 선언된 클래스와 파생된 클래스 내에서 접근 가능합니다.
internal
: 같은 어셈블리 내의 모든 클래스에서 접근 가능합니다.
protected internal
: 같은 어셈블리, 또는 파생 클래스에서 접근 가능합니다.
private protected
: 선언된 클래스와 동일한 어셈블리 내의 파생 클래스에서만 접근 가능합니다.

 

 

2. 메서드 및 클래스 관련 키워드

static
: 메서드가 클래스의 인스턴스를 생성하지 않고도 메서드를 바로 사용할 수 있게합니다.
void
: 메서드가 반환 값이 없음을 나타냅니다.
const
: 상수, 즉 변경할 수 없는 값을 정의합니다.
readonly
: 읽기 전용 필드를 정의합니다. 선언 시 또는 생성자에서만 값을 할당할 수 있습니다.
virtual
: 파생 클래스에서 재정의(override)할 수 있는 메서드를 정의합니다.
override
: 상속받은 클래스에서 부모 클래스의 메서드를 재정의 합니다.
abstract
: 파생 클래스에서 구현해야 하는 추상 메서드나 클래스를 정의합니다.

 

 

3. switch

switch ( 조건을 확인 할 대상 )
{
  case 조건1: 
     // 조건을 확인 할 대상과 조건1이 일치하는 경우의 처리 구문
     break; // switch 문 종료합니다.
  case 조건2:
    // 조건을 확인 할 대상과 조건2이 일치하는 경우의 처리 구문
     break; // switch 문 종료합니다.
  default: // case 조건들에 전부 해당하지 않는 경우 실행합니다.
    // case조건들에 전부 해당하지 않는 경우의 처리 구문
     break; // switch 문 종료합니다.
}

 

 

4. Stack

//Stack
Stack stack = new Stack();  //Stack 클래스의 인스턴스 생성합니다.

stack.Push("First");  //데이터 1번
stack.Push("Second");  //데이터 2번

Console.WriteLine(stack.Pop());  //Pop 시 2번 출력됩니다.
Console.WriteLine(stack.Pop());  //Pop 시 1번 출력됩니다.
try  //에러 확인 용 try - catch
{
    Console.WriteLine(stack.Pop());  //에러나서 실행 안됩니다.
}
catch (Exception ex)
{
    Console.WriteLine($"예외 내용 : {ex.Message}");  //에러 메시지가 뜹니다.
}
stack.Clear();  //stack 비우기입니다.

Stack은 아래에서 위로 데이터를 쌓는 형태의 자료 구조입니다.

Stack은 LIFO (Last In First Out) 후입선출 특성을 보입니다. 

나중에 들어온 데이터 2번이 먼저 출력됩니다.

 

 

5. Heap

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }

    public Person(string name, int age)
    {
        Name = name;
        Age = age;
    }
}

static void Main(string[] args)
{
	Person person1 = new Person("킴", 15);
	Person person2 = new Person("팍", 17);

	Console.WriteLine($"{person1.Name} 은/는 {person1.Age} 살");
	Console.WriteLine($"{person2.Name} 은/는 {person2.Age} 살");

	person1.Age = 18;
	Console.WriteLine($"{person1.Name} 은/는 {person1.Age}살");
    
}

C#에서 Heap은 메모리 관리의 한 부분으로, 주로 객체와 배열을 저장하는 데 사용됩니다. 

Heap에 할당된 메모리는 가비지 컬렉션에 의해 관리되며, 객체의 수명이 끝나면 자동으로 메모리가 해제됩니다.

C#에서 Heap 메모리의 관리 방식은 메모리 누수를 방지하고 효율적인 메모리 사용을 지원한다고 합니다.

 

Heap 메모리: 위 예제에서 Person 클래스의 인스턴스는 new Person(...)을 통해 Heap에 할당됩니다. 

이 객체는 메서드가 종료된 후에도 존재할 수 있으며, 필요할 때까지 메모리에 유지됩니다.

C#에서 클래스는 참조 타입입니다. 

person1과 person2는 각각 Heap에 있는 Person 객체를 참조하고 있습니다. 두 변수가 같은 객체를 참조할 수도 있습니다.

 

 

'C# > 문법' 카테고리의 다른 글

C# 문법 8 -- Nullable  (0) 2024.11.28
C# 문법 7 -- 구조체(Struct)  (0) 2024.11.27
C# 문법 5  (0) 2024.11.25
C# 문법 4  (0) 2024.11.24
C# 문법 3  (0) 2024.11.24