본문 바로가기

Development/C#22

[내일배움캠프 77일차 TIL] 입력 값 한글, 영어, 특수문자 체크하고 바이트 다르게 계산하기 맨 처음 입력 값을 받을 때에는 단순히 텍스트 길이로 계산을 해서 문자 상관없이 무조건 입력 값 하나당 길이가 1이었다. 하지만 보통 한글은 2byte, 영어/공백/특수문자는 1byte로 계산을 하기 때문에 이를 맞춰주기 위해 로직을 다시 작성했다. [ Encoding.Defalut ]int userNameByteCnt = Encoding.Defalut.GetByteCount(inputUserName.text);int farmNameByteCnt = Encoding.Defalut.GetByteCount(inputFarmName.text);Defalut로 했을 때에는 한글은 3byte, 영어는 1byte로 계산이 돼서 한글을 6글자로 제한하면 영어는 18글자까지 입력 가능해서 원하는 대로 동작하지 않았다... 2024. 8. 2.
[내일배움캠프 22일차 TIL] 객체 지향 프로그래밍(1) [ 절차 지향 VS 객체 지향 ]이전에는 순서대로 코드를 실행하는 방식인 절차 지향 프로그래밍으로 개발을 했다. 그러나 복잡한 시스템에서는 코드를 관리하고 오류를 추적하는 것이 어려우며, 한 부분에서 문제가 발생하면 이후의 모든 절차에 영향을 줄 수 있다는 단점이 있었다. 이러한 문제를 보완하기 위해 등장한 방식이 객체 지향 프로그래밍이다. 데이터와 함수를 객체 단위로 묶어서 각 객체가 독립적으로 동작할 수 있게 하여 재사용성을 높이고 유지보수가 편리해졌다. [ 특징 ]객체 지향 프로그래밍의 가장 큰 특징은 아래 4가지가 있다.① 추상화: 공통적인 속성과 기능을 추출하여 정의한다② 상속: 기존 코드를 확장하여 새로운 기능을 만들 수 있다③ 다형성: 같은 메서드와 클래스를 다른 방식으로 구현할 수 있다④ .. 2024. 5. 16.
[내일배움캠프 16일차 TIL] 제네릭, out, ref, 문자열 빌더 [ 제네릭 ]제네릭은 데이터 타입을 일반화해서 다양한 자료형에 대응할 수 있게 한다. 를 사용해서 특정 자료형 없이 선언한 뒤, 이를 사용할 때 원하는 자료형을 입력한다. 제네릭을 사용하면 코드를 재사용성을 높이고, 컴파일 오류를 줄여 타입 안전성을 제공한다. public class Inventory{ private T content; public void Put(T item) { content = item; } public T Get() { return content; }}제네릭 타입 를 사용해서 특정 자료형을 미리 정의하지 않고 아이템을 저장하거나 꺼낼 수 있는 코드를 작성했다. public class Program{ public s.. 2024. 5. 7.
[내일배움캠프 15일차 TIL] 로직 설계, 기능별 파일 구분, 폴더 구조 [ 로직 설계하기 ]노션에 구현할 기능에 대한 요소들을 정리한 뒤, 이를 바탕으로 코드를 짰다.먼저 콘솔 창에 보이길 원하는 화면을 적는다. 화면의 내용들이 보이기 위해서 필요한 코드들을 구현해 나가는 방식으로 진행하면, 일이 훨씬 수월하게 진행된다.저 기능을 어디에 구현해야 할지 위치를 파악하기 위해서 어떤 시점에서 해당 기능이 구현되는지도 정리했다. 이름 입력 메서드 마지막에 직업 선택 메서드를 불러오고, 직업 선택이 끝나면 메인 메뉴 메서드를 불러오면 된다.이외에도 직업에 관련된 정보들을 미리 정리해 놓고, 클래스나 코드를 미리 구현해서 실행시켜 보기도 했다.최종적으로 완성된 코드는 처음과는 매우 달랐지만, 노션을 통해 내 생각을 정리함으로서 빠르게 시작할 수 있었고 어떤 순서로 진행해야 할지도 감.. 2024. 5. 3.
[내일배움캠프 14일차 TIL] 추상 클래스, 인터페이스 [ 추상 클래스 ]구조public abstract class Character{ public int Health { get; set; } public abstract void Move(); public void TakeDamage(int damage) { Health -= damage; }}추상 클래스는 접근제한자 뒤에 abstract 키워드를 넣어서 만들 수 있다. 클래스 내에는 abstract 키워드가 있는 추상 메서드와 넣지 않은 일반 메서드가 포함된다. 추상 메서드는 구체적인 구현을 포함하지 않고 선언만 한다. public class Player : Character{ public override void Move() { Deb.. 2024. 5. 2.
[내일배움캠프 13일차 TIL] 클래스 메모리 구조, 기본값 세팅, 박싱/언박싱 [ 클래스 ]클래스 변수 사용//옳은 예class Program{}class StartGarme{}//틀린 예class Program{ class StartGame { }}클래스는 클래스를 변수로 사용할 수 있다. 이 말은 하나의 파일에 여러 개의 클래스가 들어갈 수 있다는 것이고, 이중클래스의 의미는 아니다. 메모리 구조메모리의 구조는 코드 영역, 데이터 영역, 힙 영역, 스택 영역으로 나뉘어 있다.코드 영역은 사용자가 실제로 작성한 코드가 실행되는 곳이다.데이터 영역은 대표적으로 static을 사용한 코드가 있다. static은 프로젝트 전반에 필요하고 공유되어야 하는 데이터에 사용한다. int num; 처럼 변수를 선언했을 때에는 스택 영역에 들어간다. 그리고 num 변수에 값 1을 할당.. 2024. 5. 1.
반응형