C#/C# Basic 13

C# Class : 클래스 Singleton

싱글톤(Singleton) -- 객체의 인스턴스가 오직 1개만 생성 ( 여러 인스턴스를 만들지 않고 기존의 인스턴스를 활용) -- 객체를 생성할 때마다 메모리 영역을 할당받아야 한다. 하지만 한번만 인스턴스를 생성한다면 메모리 낭비를 방지할 수 있다. -- 싱글톤으로 구현한 인스턴스는 '전역' 이므로, 다른 클래스의 인스턴스들이 데이터를 공유하는 것이 가능 단점 싱글톤 인스턴스가 너무 많은 일을 하거나 많은 데이터를 공유시킬 경우 다른 클래스의 인스턴스들 간에 결합도가 높아져 "개방-폐쇄 원칙" 을 위배 ( 수정이 어려워지고 테스트하기 어려워진다 ) Main using System; using System.Collections.Generic; using System.Linq; using System.Te..

C#/C# Basic 2022.12.18

C# Class : 클래스 02

C# Class : 클래스 01 클래스 (객체) 생성 -- Student 클래스 생성 -- new Student(); 에서 인스턴스가 생성된다 Student(타입) st(변수)= new Student(); new를 사용하면 객체 덩어리(인스턴스)가 만들어짐 -- heap(힙)에 할당됨 인스턴스 hickee.tistory.com using System; using System.Collections.Generic; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; namespace Class_01 { //학생 클래스 정의 internal class Student { /..

C#/C# Basic 2022.12.16

C# Class : 클래스 01

클래스 (객체) 생성 -- Student 클래스 생성 -- new Student(); 에서 인스턴스가 생성된다 Student(타입) st(변수)= new Student(); new를 사용하면 객체 덩어리(인스턴스)가 만들어짐 -- heap(힙)에 할당됨 인스턴스 안에 있는 변수 -> 인스턴스 변수, 인스턴스 안에 있는 메서드 -> 인스턴스 메서드 st가 만들어진 객체를 참조한다 Student st= new Student(); //new Student(); Student st1 = new Student(); Student st2 = new Student(); 주의!! 두 개가 다르다 (객체가 다름) new 키워드로 생성된 객체는 다 다른 객체이다 생성자 new 다음에 오는 Student();

C#/C# Basic 2022.12.15

C# Queue : 큐

Queue (큐) 선입선출 - FIFO (First In First Out) 먼저 들어온 것이 먼저 나감 ArrayList와 마찬가지로 크기가 자동으로 늘어나며, 타입이 서로 다른 값을 추가할 수 있다 using System.Collections; //Queue 클래스 객체 생성 Queue queue = new Queue(); Queue queue1 = new Queue(); var queue2 = new Queue(); Queue에 배열을 넘기면, 배열의 값으로 queue의 값을 초기화 int[] arr = { 1, 2, 3, 4, 5 }; Queue queue = new Queue(arr); Enqueue -- 데이터를 넣는 것 queue.Enqueue("1"); queue.Enqueue("2"); ..

C#/C# Basic 2022.12.12

C# Stack : 스택

Stack (스택) LIFO(Last In First Out)(후입 선출) 나중에 들어온 값이 먼저 나감 ArrayList와 마찬가지로 크기가 자동으로 늘어남 타입이 서로 다른 값을 추가할 수 있는 자료 구조 Stack stack = new Stack(); Stack stack = new Stack(); Push -- 데이터를 넣음 stack.Push("1"); stack.Push("2"); stack.Push("3"); stack.Push("4"); Peek -- 실제 들어있는 데이터를 확인 (빼지 않음) string sPeek = stack.Peek(); Console.WriteLine($"stack 조회 : {sPeek}"); 출력 ToArray() Console.WriteLine($"stack 내..

C#/C# Basic 2022.12.10

C# Method : 메서드

Method -- 클래스와 연관 O -- 클래스 내부에서 만들어짐 -- 관례적으로 변수는 위쪽 , 메쏘드는 아래쪽 1번 형태 void method_01(); 2번 형태 void method2( 매개변수 ){ } 3번 형태 데이터타입 method3(){ return 데이터타입 }; 4번 형태 데이터타입 method4( 매개변수 ){ return 데이터타입 }; Method 오버로딩(중복정의) -- Method 이름이 같아도 사용이 가능 단 매개변수 타입 또는 개수가 달라야함 -- return 타입은 상관 없음 예시 //Console 클래스 안에 WriteLine() 메쏘드 Console.WriteLine("hello"); Console.WriteLine(100); Console.WriteLine(10.5)..

C#/C# Basic 2022.12.09

C# Dictionary : 딕셔너리

Dictionary 키 : 값 (키와 값으로 이루어짐) 책의 인덱스(목차)와 비슷함 Dictionary dic = new Dictionary { //책의 인덱스(목차)와 비슷함 {111,"홍길동"}, {222,"김길동"}, {333,"박길동"} }; Dictionary 에 데이터 추가 dic.Add(444, "이길동"); Dictionary 에 있는 데이터 삭제 (키 값으로 삭제 가능) dic.Remove(222); 출력 foreach (var n in dic) { Console.WriteLine("학번 :" + n.Key + " 이름 : " + n.Value); //Console.WriteLine($"학번:{n.Key}"+$"\t이름:{n.Value}"); }

C#/C# Basic 2022.12.08

C# List : 리스트

컬렉션 클래스 (제네릭 클래스) - 자료구조 1차원 배열(선형구조) - 변수를 넣기 위해서는 빈 공간을 미리 확보해놔야 한다 1. List 리스트 - 데이터를 넣을 때마다 공간을 확보 (C에서 동적 할당) Linked List라고도 함 List * 클래스 list = new List { "Kim","Pack","Hong"}; 예시 List list = new List { "Kim", "Pack", "Hong" }; 축약 var list2 = new List { "Kim2", "Pack2", "Hong2" }; List에 데이터를 추가 list.Add("추가1"); //add는 맨뒤에 넣어짐 list.Add("추가2"); 출력 1 : foreach foreach (var n in list) { Consol..

C#/C# Basic 2022.12.07

C# Array : 2차원 배열 01

2차원 배열 초기화 1 int[,] arr2Int = { { 1, 2, 3 }, { 4, 5, 6 } }; //3차원 배열의 경우는 int arr[,,] for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { Console.Write(arr2Int[i, j] + "\t"); } Console.WriteLine(); } 출력 GetLength() 바깥쪽 0 안쪽 1 (2차원 배열) for (int i = 0; i < arr2Int.GetLength(0); i++) { for (int j = 0; j < arr2Int.GetLength(1); j++) { Console.Write(arr2Int[i, j] + "\t"); } Console.WriteLine(..

C#/C# Basic 2022.12.06

C# Array : 1차원 배열 01

1차원 배열의 초기화 1 배열의 이름에는 주소 int[] arrInt = { 10, 20, 30 }; for (int i = 0; i < arrInt.Length; i++) { //arrInt.Length 배열의 길이 Console.Write($"{arrInt[i]}\t"); } Console.WriteLine(); 1차원 배열의 초기화 2 new - 배열 공간을 생성, 메모리에 별도로 할당 - 힙 클래스 개념 - 객체지향 언어에서는 객체를 생성한다 char[] arrCh = new char[] { 'a', 'b', 'c', 'd', 'e' }; for (int i = 0; i < arrCh.Length; i++) { //arrInt.Length 배열의 길이 Console.Write($"{arrCh[i]..

C#/C# Basic 2022.12.06