1. 기본 데이터 타입 (Primitive Data Types)
int : 32비트 부호 있는 정수
int integerValue = 42;
long : 64비트 부호 있는 정수
long longValue = 123435452435534;
flot : 32비트 부동 소수점
- 3.14는 기본적으로 doble 타입으로 간주된다. 따라서 리터럴 값 뒤에 f 나 F 를 붙여 명시적으로 float 으로 해석하도록 알려줘야 한다.
- f 를 생략할시 컴파일러는 이 값을 ‘doble’ 로 간주하고 ‘float’ 타입에 대입 시 형변환 오류가 발생할 수 있다.
flot flotValue = 3.14f;
double : 64비트 부동 소수점(더 큰 정밀도를 제공한다.)
doble dobleValue = 3.14;
bool : 불리언 (참 또는 거짓)
bool boolValue = true;
char : 16비트 유니코드 문자(단일문자)
char charValue = 'A';
string : 문자열
string stringValue = "Hello, C#!";
// 1. 문자열(string) 변수
string s1 = "c#";
string s2 = "programing";
// 문자(char) 변수 (단일문자)
char c1 = 'a';
char c2 = 'b';
Console.WriteLine(c1 + c2);
// 문자열 결합
string s3 = s1 + " " + s2;
Console.WriteLine(s3);
// 부분문자열 발췌
string s3subString = s3.Substring(1, 5);
Console.WriteLine("Substring: {0}" + s3subString);
// 2. 문자배열
string s = "C# Studies";
// 문자열을 배열인덱스로 한문자 엑세스
for (int i = 0; i < s.Length; i++)
{
Console.WriteLine("index : {0} , Character: {1}",i , s[i]);
}
// 문자열을 문자배열로 반환
string str = "Hello";
char[] charArray = str.ToCharArray();
// 문자열을 문자 배열로 변환 후 각 문자 출력
for (int i = 0; i < charArray.Length; i++)
{
Console.WriteLine(charArray[i]);
// 문자 배열로 반환 후 각 문자를 같은 줄에 출력
//Console.Write(charArray[i]);
}
// 문자배열을 문자열로 반환
char[] charArray2 = {'a', 'b', 'c' };
s = new string(charArray2);
Console.WriteLine(s);
// 문자 연산
char d1 = 'A';
char d2 = (char)(d1 + 3);
Console.WriteLine("문자연산" + d2); // D
열거형 (Enum): 서로 관련된 상수(변하지 않는 값) 들의 집합을 나타내는 데이터 형식
enum Days
{
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
}
Days today = Days.Wednesday;
Casting , Flag 예제
- Casting(전환) : 한 타입을 다른 타입으로 변경하는 것
- Flag : 해당 타입 혹은 멤버가 어떤 특성을 갖고 있는 지 나타내게 된다.
namespace Enum
{
internal class Program
{
// 1. Enum, Casting
enum City
{
Seoul, // 0
Deajun, // 1
Busan = 5, // 5
Jeju = 10, // 10
};
// 2. Flag
[Flags]
enum Border
{
None = 0,
Top = 1,
Right = 2,
Bottom = 4,
Left = 8,
}
static void Main(string[] args)
{
// 1. Enum 사용, Casting
City myCity;
// enum 타입에 값을 대입하는 방법
myCity = City.Seoul;
// enum을 int로 변환(Casting) 하는 방법
// (int) 를 앞에 지정.
int cityValue = (int)myCity;
Console.WriteLine(cityValue);
if(myCity == City.Seoul)
{
Console.WriteLine("Welcome to Seoul");
}
// 2. Enum Flag
// or 연산자로 다중 플래그 할당
Border b = Border.Top | Border.Bottom; // 1,4
// & 연산자로 플래그 체크 (Top 플래그가 설정되어 있는지 여부 체크)
if((b & Border.Top) != 0) {
// hasFlag() 를 이용해 플래그 체크
if (b.HasFlag(Border.Bottom))
{
// 해당 플래그 멤버명들을 문자열로 보여준다. "Top, Bottom"
// [Flag] 가 없다면 1+4 즉 5를 출력한다.
Console.WriteLine(b.ToString());
}
}
}
}
}
2. 참조형 데이터 타입 (Reference Types)
**object : 모든 형식의 기본 클래스**
object objValue = 42;
Class : 사용자 정의 클래스
class Person
{
public string Name { get; set; }
}
Person personObject = new Person { Name = "John" };
interface : 인터페이스
interface ILogger
{
void Log(string message);
}
class ConsoleLogger : ILogger
{
public void Log(string message)
{
Console.WriteLine(message);
}
}
ILogger logger = new ConsoleLogger();
logger.Log("Log this message.");
delegate : 델리게이트 (대리자)
delegate void MyDelegate(string message);
class MyClass
{
public void DisplayMessage(string message)
{
Console.WriteLine(message);
}
}
MyClass myObject = new MyClass();
MyDelegate delegateInstance = myObject.DisplayMessage;
delegateInstance("Delegate example.");
Nullable 타입
int? nullableInt = null;
구조체 (Struct)
struct Point
{
public int X;
public int Y;
}
Point myPoint = new Point { X = 10, Y = 20 };