C#_시작

Nubox·2024년 1월 30일

C#

목록 보기
1/4

C#

C#은 C++를 계승한다는 의미로 붙여진 이름으로 마이크로소프트Microsoft의 앤더스 헤일스버그Anders Hejlsberg가 만들었다. C++에서 +를 하나 더 붙여서 C#이라는 이름을 붙였다고 한다.
1990년 대, Microsoft에서는 .NET이라는 비전을 발표하면서 인터넷 서비스는 모든 기기에서 사용할 수 있어야하며, 이를 위한 플랫폼으로 .NET(닷넷)을 만들어 냈다.
C#은 이 닷넷을 기반으로 작동하는 프로그래밍 언어이며, 다양한 플랫폼에서 닷넷만 지원하면 사용이 가능하다.

namespace

using System; //system 네임스페이스 사용을 컴파일러에게 알림

namespace Hello{ //현재 네임스페이스의 정의

	class Main{ //클래스 선언
    
    	static MainApp(String[] _args){//클래스 내의 메소드(함수) 선언및 정의
        	
            Console.WriteLine("Hello, World!!");
        }
    }

}

Namespace는 성격이나 하는 일이 비슷한 클래스, 구조체, 인터페이스, 대리자, 열거 형식등을 하나의 이름 아래 묶는 일을 합니다. 각종 클래스들과 구조체 등을 포함하여 다른 네임스페이스에서 사용할 때 using 키워드를 사용하여 클래스를 호출하거나 상속해서 원하는 작업을 진행할 수 있습니다.

Class

클래스는 객체지향 프로그래밍Object Oriented Programming의 기본으로 코드 내의 모든 것을 표현하르는 프로그래밍 패러다임을 뜻한다. 속성을 데이터로 기능을 메소드로 표현하며 추상적으로 나타낸는 것을 객체지향 프로그래밍이라고 한다. 클래스는 객체가 가지게 될 속성과 기능을 정의하지만 실체를 가지지 않고 클래스를 이용해서 객체가 실체를 가지는 것처럼 구현 할 수 있다.
클래스는 메소드method와 각각의 변수들을 포함한 집합체이며, 여기서 메소드는 c언어의 함수와 동일하다. C++ 역시 객체지향 언어로 클래스 개념이 포함되어 있다.

변수와 데이터

변수 자료형


C#의 변수 유형은 C와 거의 동일하다.

이름설명크기(byte)범위
byte부호 없는 정수10 ~ 255
sbytesigned byte 정수1-128 ~ 127
short정수2-32,768 ~ 32,767
ushortunsigned short 부호없는 정수20 ~ 65,535
int정수4-2,147,483,648 ~ 2,147,483,647
uintunsigned int 부호없는 정수40 ~ 4,294,967,295
long정수8-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,808
ulongunsigned long 부호없는 정수80 ~ 18,446,744,073,709,551,615
char유니코드 문자2

부동소수점 형식(실수)도 C와 동일하다.

이름설명크기(바이트)범위
float단일 정밀도 부동 소수점 형식(소숫점 7자리)4-3.402823e38 ~ 3.402823e38
double복수 정밀도 부동 소수점 형식(15 ~ 16개의 자릿수를 다룰 수 있음)8-1.79769313486232e308 ~ 1.79769313486232e308

여기서부터는 C#에 있는 자료형이다.

decimal 형식

이름설명크기(바이트)범위
decimal29자리 데이터를 표현할 수 잇는 소수형식16+- 1.0 10e-28 ~ +-7.910e28

논리형식

이름설명크기(바이트)범위
bool논리형식1true, false


object 형식

object는 객체라는 뜻을 지니며 어떤 데이터든지 다룰 수 있는 데이터 형식을 의미한다.
object 형은 다른 모든 자료형으로부터 형식을 상속 받아 모든 자료형을 담을 수 있다.
상속의 의미는 다음에 다룰 것이다.

object 형은 참조 형식으로 데이터를 힙heap 영역에 할당한다.
값 형식의 데이터를 할당하기 위해 '박싱Boxing' 기능을 사용하여 값을 할당한다.
그리고 박싱된 값을 꺼내 값 형식 변수에 저장하는 과정을 일컬어서 '언박식Unboxing'이라고 한다.

문자열을 숫자로

C#에는 문자열을 저장하기위한 String이라는 클래스가 존재한다. 이는 자료형처럼 보이지만 실제로는 클래스내부의 문자열을 다루기 위한 메소드들이 들어있어 문자열에 대한 접근, 수정이 가능하다. 그리고 C#에는 이러한 문자열을 숫자로 변형할 수 있다.

int a = int.Parse("12345");
float b = float.Parse("123.45");

Parse() 메소드로 진행할 수도 있고

int c = 12345;
string d = c.ToString();

float e = 123.45f;
string f = e.ToString();

각 자료형은 object 형으로부터 상속받은 ToString()이라는 메소드로 문자열로 변환할 수 있다.
문자열도 ToInt()같은 메소드로 가능하다.

Var 형

C#은 변수나 상수에 대해 깐깐하게 검사를 하는 강력한 형식의 언어Strong Typed Language이다. var 키워드는 사용자가 일일히 형식을 외워 변수에 할당할 귀찮음을 줄이는 편리함을 주는 자료형이다. 선언하면 컴파일러가 자동으로 해당 변수의 형식을 유추해서 지정해준다. 다만, 사용할려면 선언과 동시에 초기화를 해줘야 한다.
다만 좀 더 정확하게 값에 대한 연산이 필요하다면 var형 보단 다른 자료형을 선언해주는게 좋을 것 같다.

문자열 보간

C#6.0에서 새로 도입된 기능으로, 기존의 출력문 System.Console.WriteLine()에 '$'를 붙여서 사용한다.

int a = 10;

System.Console.WriteLine($"a = {a}"); 
// a = 10 

string b = "Hello, World!";
System.Console.WriteLine($"{b}");
// Hello, World!

문자열을 생성할 때 3가지 방법이 있는데

 static string valueStr1 = "Value " + "is " + value.ToString();

 static string valueStr2 = string.Format("Value is {0}",value);

 static string valueStr3 = $"Value is {value}";

위 방법중에는 보간법이 제일 빠르지만 StringBuilder의 Append 메소드를 사용한 방법이 제일 빠르다고 한다.

StringBuilder sb = new StringBuilder();
sb.Append("Value");
sb.Append(" is ");
sb.Append(value);
Console.WriteLine(sb.ToString());
profile
게임 개발을 하면서 배워가는 것들을 조금씩 기록하는 곳입니다

0개의 댓글