본문 바로가기
유니티/C#

7. C# 기초 수업 -7

by 찡사랑방 2023. 3. 28.
728x90
728x90

7번째 수업 필기

 

1. 프로퍼티 - 자료를 보호하기 위해씀 ->private

 

class Enemy
{ private string name;
  private int hp; }
public Enemy(string name, int _hp)  -> 생성자는 private 사용X
{ this.name=name;
  hp=_hp (this를 사용하고 싶지 않다면 유일하게 변수에 쓸수 있는 특수문자 _를 써서 살짝 다름을 표시) }

//프로퍼티 -> 자료(보호) ->private 
//getter, setter 함수 

class Enemy 
{ 
    private string name; 
    private int hp; 
    EnemyState state = EnemyState.idle; 
    //프로퍼티 
    public int Hp 
    { 
        get { return hp; } 
        set 
        { 
            hp = value; 
            if (hp <= 0) state = EnemyState.dead; 
        } 
    } 

    //생성자 -> 초기값 설정 메소드 (private 사용X) 
    public Enemy(string name, int _hp) 
    { 
        this.name = name; 
        hp = _hp; 
    } 
} 
enum EnemyState { idle, trace, attack, dead } 
internal class Program 
{ 
    private static void Main(string[] args) 
    { 
      Enemy zombie = new Enemy("zombie", 100); 
        zombie.Hp = zombie.Hp - 10;
    } 
}

//자동프로퍼티 
    public string Name { get; set; }
//public string Name  
    //{  
    //    get { return name; }  
    //    set { name = value; } 
    // }

1.배열 

//배열 -> 동일한 자료형 -> 여러개의 공간 
1)int[] array1 = new int[3]; 
array1[0] = 1; 
array1[1] = 2; 
array1[2] = 3;

2)int[] array2 = new int[] { 1, 2, 3 };

3)int[] array3 = { 1, 2, 3 };

----------------------------------------------------------------------------> 다 같은 방법

 

1-2.이차원배열

 

int[,] array = { { 1, 2, 3 },{ 4, 5, 6 } };              int[x,y] -> x행 y열
Console.WriteLine(array.Length);

 

1 2 3
4 5 6

 

2.컬렉션 Collection > 배열, list, stack, queue


1)ArrayList list = new ArrayList();

list.Add(10); 
list.Add(20); 
list.Insert(1,15);
10 15 20

삭제

 list.Remove()
         list. RemoveAt()

 

2)queue -> 자료구조 -> 한쪽 입구에서 입력이 다른 입구에서 출력(들어간 순서대로)

 

Queue queue = new Queue(); 
queue.Enqueue(10);          Enqueue ->입력
queue.Enqueue(20); 

while (queue.Count > 0) 
{ 
    Console.WriteLine(queue.Dequeue); Dequeue -> 출력 ( 완전히 없어진다)
}

3)//stack -> 자료구조 -> 한쪽입구에서 입력과 출력이 발생 (queue와 반대로) 
Stack stack= new Stack(); 
stack.Push(10); 
stack.Push(20); 
stack.Push(30); 
while(stack.Count > 0) 
{ 
    Console.WriteLine(stack.Pop());  
}

 

4)

 

hashTable(key<-->value) 
Hashtable table = new Hashtable(); 
table["hp"] = 10; 
table["speed"] = 3.5f; 
table["name"] = "enemy";

 

5)
일반화 -> 특수한 개념으로부터 공통된 개념을 찾아 묶는 것
배열 복사(copy) 메소드 

internal class Program 
{ 
  static void CopyArray(int[] source, int[] target) 
    { 
        for (int i = 0; i < source.Length; i++) 
        { 
            target[i] = source[i]; 
        } 
    } 


    static void CopyArray(string[] source, string[] target) 
    { 
        for (int i = 0; i < source.Length; i++) 
        { 
            target[i] = source[i]; 
        } 
    } 
    private static void Main(string[] args) 
    {
          int[] source = { 1, 2, 3 }; 
          int[] target = new int[source.Length]; 
          CopyArray(source, target); 
          foreach (var item in target) 
        { 
            Console.WriteLine(item); 
        } 
        
        string[] source1 = { "a", "b", "c"}; 
        string[] target1 = new string[source1.Length]; 
        CopyArray(source1, target1); 
        foreach (var item in target1) 
        { 
            Console.WriteLine(item); 
        } 

    } 
}

------------------------------------------------------------------------------------------------------- 위 아래 비교

 

 static void CopyArray<T>(T[] source, T[] target) 
    { 
        for (int i = 0; i < source.Length; i++) 
        { 
            target[i] = source[i]; 
        } 
    } 


     
    private static void Main(string[] args) 
    { 
        int[] source = { 1, 2, 3 }; 
        int[] target = new int[source.Length]; 
        CopyArray<int>(source, target); 
        foreach (var item in target) 
        { 
            Console.WriteLine(item); 
        } 

        string[] source1 = { "a", "b", "c"}; 
        string[] target1 = new string[source1.Length]; 
        CopyArray<string>(source1, target1); 
        foreach (var item in target1) 
        { 
            Console.WriteLine(item); 
        } 

    }
728x90

'유니티 > C#' 카테고리의 다른 글

9. C# 기초 수업 -9  (0) 2023.03.30
8. C# 기초 수업 -8  (0) 2023.03.29
6. C# 기초 수업 -6  (0) 2023.03.27
5. C# 기초 수업 -5  (0) 2023.03.24
4. C# 기초 수업 -4  (0) 2023.03.23