반응형

c# 33

[C# 문법] Part19 프로퍼티(Property)

[ 개요 ]C#의 핵심 기능 중 하나인 프로퍼티(Property)에 대해 자세히 알아보자.[ Property란? ]프로퍼티는 필드(변수)에 대한 접근을 제어하는 방법을 제공하는 멤버이다.겉으로 보기에는 필드처럼 보이지만, 실제로는 메서드처럼 동작하여 데이터의 유효성 검사나 계산된 값을 반환할 수 있다.get set 문법을 사용한다.[ Property 기본 문법 ]public class Player{ // 백킹 필드 (backing field) private int health; // 기본적인 프로퍼티 구현 public int Health { get { return health; } set { if (value 100..

C#문법 2025.02.02

[C# 문법] Part18 접근 제한자 (public, private, protected)

[ 개요 ]오늘은 C#의 핵심 개념 중 하나인 접근 제한자에 대해 알아보자.접근 제한자는 클래스의 멤버(필드, 메서드 등)에 대한 접근 범위를 제어하는 중요한 개념이다.[ 접근 제한자의 종류 ]C#에서 주로 사용되는 접근 제한자는 다음과 같다.public: 어디서든 접근 가능private: 같은 클래스 내에서만 접근 가능protected: 같은 클래스 및 파생 클래스에서 접근 가능[ 활용법 ]부모 클래스인 Charater을 아래와 같이 구현했다고 가정하자.public class Character{ // private 필드 - 클래스 내부에서만 접근 가능 private int health; private int mana; private string playerName; // pr..

C#문법 2025.02.02

[C# 문법] Part17 const 키워드

개요오늘은 C#에서 중요한 키워드 중 하나인 const에 대해 자세히 알아보겠다.const란?const는 "constant"의 줄임말로, 한번 값이 할당되면 절대 변경할 수 없는 상수를 선언할 때 사용하는 키워드다.변수와 달리 const로 선언된 값은 프로그램 실행 중에 절대 바뀔 수 없다.const의 특징 선언과 동시에 초기화가 필요컴파일 타임에 값이 결정모든 기본 데이터 타입(int, string, double 등)에 사용 가능메서드의 반환값으로는 초기화할 수 없음사용예시public class GameConstants{ // 게임 기본 설정 관련 상수 private const string GAME_TITLE = "Dragon Quest"; private const int MAX_PLA..

C#문법 2025.02.02

[C# 문법] Part16 static 한정자

[ static 한정자란 ]C#을 다루면서 static이라는 키워드는 많이 봤을 것이다.static은 변수, 메서드, 클래스에서 정적 속성을 부여하여 클래스로부터 객체를 생성하지 않고 변수나 메서드를 호출할 수 있게 한다.우리가 클래스를 구현하고 이를 new 연산자를 통해 인스턴스를 생성한다면 메모리에 할당된다는 것을 알 수 있었다. 그러나 static을 사용한다면 인스턴스를 생성하지 않아 메모리의 비용을 줄 일 수 있는 장점이 있다. 즉, 객체를 생성하지 않고 사용할 수 있는 변수, 메서드, 클래스라면 static을 사용하는 것이 유용할 수 있다.[ static 변수 ]또는 정적 변수라고도 부른다.클래스의 일반 멤버 변수는 클래스로부터 객체가 생성될 때마다 각각 할당되지만, 정적 변수는 해당 클래스가 ..

C#문법 2024.10.19

[C#문법] Part15 this 키워드

[ this 키워드 ] this 키워드는 인스턴스 자신을 가리킬때 사용된다.죽, this 키워드를 사용하면 인스턴스 내부에서 자신의 멤버 변수나 멤버 메서드에 접근할 수 있다.그냥 인스턴스의 멤버 변수와 멤버 메서드는 가져와도 상관없지만 코드의 가독성을 높일 수 있다.그리고 멤버 변수와 매개변수의 이름이 같을 경우, this 키워드를 이용하면 구분하기 쉽다.[ 구현 방법 ]this.멤버변수 = 값;this.멤버메서드();this 키워드 뒤에 인스턴스가 가지고 있는 멤버 변수나 멤버 메서드를 불러올 수 있다.[ 사용 방법 ]public class GameCharacter{ public string name; public GameCharacter(string name) { thi..

C#문법 2024.10.12

[C#문법] Part14 new 연산자

[ 개요 ]GameCharacter warrior = new GameCharacter();인스턴스와 생성자를 다루면서 new 키워드는 언급하였다.이 파트에서 new 연산자에 대해서 설명하고자 한다.참고로 new 연산자라고 한 것은 new의 쓰임새가 여러 개가 있는데 그중 연산자로서의 new에 대해 알아볼 것이다.[ new 연산자 ]new 연산자는 생성자를 이용해서 heap 메모리에 객체(인스턴스)를 생성하고 heap메모리에서 생성한 객체(인스턴스)를 반환해 주는 역할을 한다. C언어를 배웠다면 malloc라는 개념을 알고 있을 텐데 new 연산자와 같다고 알고 있으면 된다. [ new 연산자의 다양한 활용 ] 참고로 C#에서는 클래스, 구조체, 배열, 제네릭 타입 등 모든 데이터 형식이 클래스이다.즉 n..

C#문법 2024.10.09

[C#문법] Part13 생성자(Constructor)와 소멸자(Destructor)

[ 개요 ]인스턴스를 생성할 때 자동으로 호출되는 함수가 있다.GameCharacter warrior = new GameCharacter();앞선 클래스 파트에서 인스턴스를 생성할 때 이런 코드를 봤었을 것이다.new 키워드 뒤에 오는 GameCharacter()가 바로 생성자이다.이번에는 생성자가 무엇인지 알아보고 그와 한 쌍을 이루는 소멸자가 무엇인지 알아보도록 하겠다.[ 생성자란 ]인스턴스 생성 시 자동으로 호출되는 함수로서 인스턴스 초기화 메서드라고 불린다.어떤 인스턴스든 꼭 가지고 있는 메서드이다. 생성자에는 두 가지 종류가 있다.기본 생성자(default constructor)직접 정의한 생성자기본 생성자는 사용자가 직접 생성자를 정의하지 않아도 자동으로 만들어지며 아무런 작동을 하지 않는 생..

C#문법 2024.10.09

[C#문법] Part12 클래스(Class)

[ 개요 ]https://blackwolfdev.tistory.com/30위의 객체지향 프로그래밍 설명에서 클래스 부분을 참고하면 된다[ 구현 방법 ]클래스를 구현하려면 멤버 변수와 멤버 메서드가 필요하다.무엇을 멤버 변수로 하고 무엇을 멤버 메서드로 하면 좋을까?내가 게임 캐릭터를 구현한다고 가정하자전사, 마법사 등 다양한 직업들이 있을 텐데 이들의 모체가 될 클래스를 구현하려면게임 캐릭터가 공통적으로 가지고 있을 속성과 기능을 생각하면 된다. 속성으로는 이름, 체력, 공격력 등이 있고기능으로는 서있기, 공격하기, 대화하기 등이 있을 것이다.속성은 클래스의 멤버 변수가 되고기능은 클래스의 멤버 메서드가 된다.class 클래스명{ 자료형 변수명1; 자료형 변수명2; 반환형 메서드명1() ..

C#문법 2024.10.04

[C#문법] 객체지향(Object Oriented Programming)이란

[ 개요 ]C#은 객체지향 프로그래밍 언어(Object Oriented Programming)라는 말은 많이 들어봤을 것이다.객체지향은 말 그대도 객체를 이용하는 프로그래밍 언어라는 뜻이다.프로그래밍에서 객체(Object), 클래스(Class), 인스턴스(Instance)라는 용어가 자주 언급되는데 이것들이 무엇인지 알아보도록 하자[ 객체(Object) ]기본적인 정의는 물리적이나 추상적으로 존재하는 사물이다.프로그래밍에서는 클래스를 통해 생성한 인스턴스를 의미한다.위키피디아에서는 “클래스에서 정의한 것을 토대로 메모리(실제 저장 공간)에 할당된 것으로 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간”라고 말한다.[ 클래스(Class) ]객체를 생성하기 위해 만들어놓은 설계도이다.프로그래밍..

C#문법 2024.10.04

[C#문법] Part11 구조체(struct)

[ 개요 ]객체지향 프로그래밍이란 객체(object)'라는 기본 단위로 나누고 이들의 상호 작용으로 서술하는 방식이다. 객체는 변수와 매소드(함수)로 구성이 되어 있다.자바, C# 등과 같은 언어는 객체지향 언어이다. C언어와 같은 절차지향 언어에서는 클래스라는 개념이 없어서 구조체를 사용하였다. 저자는 구조체를 먼저 이해하면 클래스라는 개념도 이해하기 쉬울 거라 생각이 들어 이번 파트에는 구조체를 먼저 짚고 넘어가고자 한다.[ 구조체란 ]필요한 변수들을 모아서 새로운 데이터형처럼 사용하는 것을 구조체라고 한다.앞서 배운 자료형들(int, float, string 등)을 여러 개를 활용해서 구조체를 만들 수 있는 것이다.[ 활용 예시 ]3차원 평면상의 위치를 나타낼 때 x, y, z 축 좌표값을 이용한다..

C#문법 2024.10.04

[C#문법] Part10 지역변수와 전역변수(Local variable, Grobal variable)

[ 지역변수 ]하나의 함수 안에서만 유효한 변수를 지역 변수라고 한다.자신을 사용하는 함수안에서 선언하며, 그 함수 내에서만 사용이 가능하다. [ 전역변수 ]같은 클래스 범위 안의 모든 연산에서 사용할 수 있는 변수를 전역변수라고 한다.모든 함수의 밖에서 선언할 수 있고 여러 함수에서 사용할 수 있다.  [ 예제 ]class Program{ static string name = "Grobal variable"; static void Main(string[] args) { NamePrint(); Console.WriteLine("두번째 출력: " + name); } static void NamePrint() { string name = ..

C#문법 2023.03.15

[C#문법] Part9-3 함수: params

[ params ]지금까지 봐왔던 함수들은 받을 수 있는 인자의 수가 정해져있었다.만약에 인자의 수를 미리 예상하거나 정할 수 없는 경우에는 어떻게 해야 할까?C#에서는 함수가 인자를 가변적으로 받을 수 있게 params 문법이 있다.    params 자료형[] 배열명 사용법은 위와 같다.※ 참고로 params는 1차원 배열에서 쓸 수 있다class Program{ static void Main(string[] args) { Console.WriteLine("Sum1: " + ArrSum(1,2,3,4,5)); Console.WriteLine("Sum2: " + ArrSum(1,2,3,4,5,6,7,8,9,10)); } static int ArrSum(pa..

C#문법 2023.03.15

[C#문법] Part9-2 함수: 함수호출방법(Call By Value, Call By Reference, Call By Result)

[ 개요 ]함수를 호출하는 방법에도 여러 가지가 존재한다.어떤 방법으로 함수를 호출했느냐에 따라 전혀 다른 결과 값이 반환되므로 각각의 차이점을 알아야한다.[ 값에 의한 호출 ]값에 의한 호출이란 함수를 호출할 때 필요한 매개변수의 값을 넘겨주는 방식이다.class Program{ static void Main(string[] args) { Console.WriteLine("CallByValue 출력: " + CallByValue(1)); } static int CallByValue(int a) { return a; }}CallByValue() 함수에 값을 넘기고 출력이 됨을 확인할 수 있다.[ 참조에 의한 호출 ]참조에 의한 호출은 함수에 전달되..

C#문법 2023.03.15

[프로그래머스] C# 문자열 나누기

static int solution(string s) { int answer = 0; int firstCount = 0; int otherCount = 0; char first; first = s[0]; int i; //주어진 문자열 순회 for (i = 0; i < s.Length - 1; i++) { if (first == s[i]) //첫 글자와 같으면 firstCount +1 firstCount++; else //첫 글자와 다르면 otherCount +1 otherCount++; if (firstCount == otherCount) // 두 개의 카운터가 같을 경우 { firstCount = 0; otherCount = 0; answer++; first = s[i + 1]; //다음 글자를 첫 글..

Programmers 2023.03.03

[C#문법] Part9-1 함수

[ 개요 ]프로그래밍을 하다보면 중복해서 사용하는 기능들이 나온다.이 부분을 복사해서 붙여놓는식으로 코드를 짜다보면 굉장히 길어지고 지저분해진다.C#을 포함한 프로그래밍 언어에서는 ‘함수(또는 메소드)’를 통해 반복되는 기능을 묶어서 재사용할 수 있도록 모듈화 하였다.이를 통해 중복코드의 사용을 줄이고 재활용성을 높이며 유지보수가 편해진다.[ 개념 ]함수는 특정기능을 수행하도록 나눠진 작업 단위이다.혹은 하나의 목적을 구현하기 위한 명령문들의 집합이라고 말하기도 한다. 반환형 함수명(자료형1 매개변수1, 자료형2 매개변수2 ....){//코드return 반환값;} 함수는 입력과 출력으로 이루어져있다.괄호()안에 입력받은 값을 저장할 변수를 선언한다.입력하는 값의 자료형과 입력 받을 매개변수의 자료형은 동..

C#문법 2023.02.15
728x90