정수 형식 예제
//정수형식
using System;
namespace IntegralTypes
{
class MainApp
{
static void Main(string[] args)
{
sbyte a = -10;
byte b = 40;
Console.WriteLine($"a={a}, b={b}");
short c = -30000;
ushort d = 60000;
Console.WriteLine($"c={c}, d={d}");
int e = 1000_0000;
uint f = 3_000_0000;
Console.WriteLine($"e={e}, f={f}");
long g = -5000_0000_0000;
ulong h = 200_0000_0000_0000_0000;
Console.WriteLine($"g={g}, h={h}");
}
}
}
<실행결과>
$는 파이썬의 f와 비슷합니다 $'{a}'는 변수 a의 값을 사용하겠다는 의미입니다.
숫자에 쓰인 '_'는 여기서 구분자로 사용됩니다. 코드 입력시 식별하기 쉽게 하기 위함이며, 빌드시 출력되지 않습니다.
2진수, 10진수, 16진수 리터럴
using System;
namespace IntegerLiterals
{
class MainApp
{
static void Main(string[] args)
{
byte a = 240; //10진수
Console.WriteLine($"a={a}");
byte b = 0b1111_0000; //2진수
Console.WriteLine($"b={b}");
byte c = 0XF0; //16진수
Console.WriteLine($"c={c}");
uint d = 0x1234_abcd; //16진수
Console.WriteLine($"d={d}");
}
}
}
<실행결과>
문자 형식
using System;
namespace Char
{
class MainApp
{
static void Main(string[] args)
{
char a = '안';
char b = '녕';
char c = '하';
char d = '세';
char e = '요';
Console.Write(a); //Console.Write() 메소드는 데이터를 출력한 후 줄을 바꾸지 않음
Console.Write(b);
Console.Write(c);
Console.Write(d);
Console.Write(e);
Console.WriteLine(); //Console.WriteLine() 메소드는 데이터를 출력한 후 줄을 바꿈.
}
}
}
<실행결과>
문자열 형식
using System;
namespace String
{
class MainApp
{
static void Main(string[] args)
{
string a = "안녕하세요?";
string b = "바바리안입니다.";
Console.WriteLine(a);
Console.WriteLine(b);
}
}
}
<실행결과>
문자열 형식 2
using System;
namespace Multiline
{
class MainApp
{
static void Main(string[] args)
{
string multiline = """
별 하나에 추억과
별 하나에 사랑과
별 하나에 쓸쓸함과
별 하나에 동경과
별 하나에 시와
별 하나에 어머니, 어머니
""";
Console.WriteLine(multiline);
}
}
}
- """ (triple quotes)를 사용하는 이유는 다중 행 문자열을 좀 더 간편하고 가독성 좋게 작성할 수 있도록 하기 위함입니다.
- 긴 문자열을 여러 줄에 걸쳐 작성할 때 줄바꿈이나 들여쓰기 등을 그대로 표현할 수 있게 합니다.
object형식
using System;
namespace Multiline
{
class Object
{
static void Main(string[] args)
{
object a = 123;
object b = 3.121592653589793238462643383279m;
object c = true;
object d = "안녕하세요.";
Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);
Console.WriteLine(d);
}
}
}
- 상속 개념이랄까요?
- 그냥 object라는 객체는 모든 타입의 변수를 담을 수 있다라고 생각하고 넘어 가겠습니다.
박싱과 언박싱
using System;
namespace BoxingUnboxing
{
class MainApp
{
static void Main(string[] args)
{
int a = 123;
object b = (object)a; //a에 담긴 것을 박싱해서 heep에 저장.
int c = (int)b; // b에 담긴 것을 언박싱해서 스택에 저장.
Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);
double x = 2.1313213;
object y = x; //x 에 담긴 값을 박싱해서 heep에 저장
double z = (double)y; //y에 담긴 값은 언박싱해서 스택에 저장.
Console.WriteLine(x);
Console.WriteLine(y);
Console.WriteLine(z);
}
}
}
<실행결과>
문자열을 정수로, 정수를 문자열로
using System;
namespace StringNumberConversion
{
class MainApp
{
static void Main(string[] args)
{
int a = 123;
string b = a.ToString();
Console.WriteLine(b);
float c = 3.14f;
string d = c.ToString();
Console.WriteLine(d);
string e = "123456";
int f = Convert.ToInt32(e);
Console.WriteLine(f);
string g = "1.2345";
float h = float.Parse(g);
Console.WriteLine(h);
}
}
}
<실행결과>
- 변수.ToString(); -> 문자열로 변환
- Convert.ToInt32(변수) ->문자열을 정수형으로 변환
- float.Parse(변수) ->실수형으로 변환.
상수선언
using System;
using static System.Runtime.InteropServices.JavaScript.JSType;
namespace Constant
{
class MainApp
{
static void Main(string[] args)
{
const int MAX_INT = 2147483647;
const int MIN_INT = -2147483648;
Console.WriteLine(MAX_INT);
Console.WriteLine(MIN_INT);
}
}
}
실행 결과 볼 필요도 없이 상수 선언은 이렇게 합니다.
열거형
using System;
using static System.Runtime.InteropServices.JavaScript.JSType;
namespace Enum
{
class MainApp
{
enum DialogResult {YES, NO, CANCEL, CONFIRM, OK}
static void Main(string[] args)
{
Console.WriteLine((int)DialogResult.YES);
Console.WriteLine((int)DialogResult.NO);
Console.WriteLine((int)DialogResult.CANCEL);
Console.WriteLine((int)DialogResult.CONFIRM);
Console.WriteLine((int)DialogResult.OK);
}
}
}
<실행결과>
열거형2
using System;
namespace Enum2
{
class MainApp
{
enum DialogResult {YES, NO, CANCEL, CONFIRM, OK}
static void Main(string[] args)
{
DialogResult result = DialogResult.YES;
Console.WriteLine(result == DialogResult.YES);
Console.WriteLine(result == DialogResult.NO);
Console.WriteLine(result == DialogResult.CANCEL);
Console.WriteLine(result == DialogResult.CONFIRM);
Console.WriteLine(result == DialogResult.OK);
}
}
}
<실행결과>
Nullable 형식
Nullable 형식의 이름은 Null(비어 있는) + able(~될 수 있는), 즉 ‘비어 있는상태가될 수 있는 형식' 이라는 뜻을 나타냅니다. Nullable 형석의 변수를 선언할 때는 다음과 같이 원래의 데이터 형 식 이름 뒤에 "?'만붙여주면 됩니다.
테이터_형식? 변수_이름;
using System;
namespace Nullable
{
class MainApp
{
static void Main(string[] args)
{
int? a = null;
Console.WriteLine(a.HasValue);
Console.WriteLine(a != null);
a = 3;
Console.WriteLine(a.HasValue);
Console.WriteLine(a != null);
Console.WriteLine(a.Value);
}
}
}
<실행결과>
var
using System;
namespace UsingVar
{
class MainApp
{
static void Main(string[] args)
{
var a = 20;
Console.WriteLine("Type: {0}, Value: {1}", a.GetType(), a);
var b = 2.1313213;
Console.WriteLine("Type: {0}, Value: {1}", b.GetType(), b);
var c = "Hello, world!";
Console.WriteLine("Type: {0}, Value:{1}", c.GetType(), c);
var d = new int[] { 10, 20, 30 };
Console.WriteLine("Type: {0}, Value:{1}", d.GetType(), d);
foreach (var e in d)
Console.WriteLine("{0} ",e);
}
}
}
<실행결과>
공용형식 시스템
외우고 공부할 시간 없습니다. 이런게 잇구나 하고 넘어갑시다.
문자열 안에서 찾기
using static System.Console;
namespace StringSearch
{
class MainApp
{
static void Main(string[] args)
{
string greeting = "Good Morning";
WriteLine(greeting);
WriteLine();
//IndexOf()
WriteLine("IndexOf 'Good' : {0}", greeting.IndexOf("Good"));
WriteLine("IndexOf 'o' : {0}", greeting.IndexOf('o'));
//LastIndexOf()
WriteLine("LastIdexOf 'Good' : {0}", greeting.LastIndexOf("Good"));
WriteLine("LastIdexOf 'o' : {0}", greeting.LastIndexOf("o"));
//StartWith()
WriteLine("StartsWith 'Good' : {0}", greeting.StartsWith("Good"));
WriteLine("StartsWith 'Morning' {0}", greeting.StartsWith("Morning"));
// EndsWith()
WriteLine("EndsWith 'Good' : {0}", greeting.EndsWith("Good"));
WriteLine("EndsWith 'Morning' : {0}", greeting.EndsWith("Morning"));
// Contains()
WriteLine("Contains 'Evening' : {0}", greeting.Contains("Evening"));
WriteLine("Contains 'Morning' : {0}", greeting.Contains("Morning"));
// Replace()
WriteLine("Replaced 'Morning' with 'Evening': {0}", greeting.Replace("Morning", "Evening"));
}
}
}
<실행결과>
문자열 변형하기
using static System.Console;
namespace StringModify
{
class MainApp
{
static void Main(string[] args)
{
WriteLine("ToLower() : '{0}'", "ABC".ToLower());
WriteLine("ToUpper() : '{0}'", "abc".ToUpper());
WriteLine("Insert() : '{0}'", "Happy Friday!".Insert(5, " Sunny"));
WriteLine("Remove() : '{0}'", "I Don't Love You.".Remove(2, 6));
WriteLine("Trim() : '{0}'", " No Spaces ".Trim());
WriteLine("TrimStart() : '{0}'", " No Spaces ".TrimStart());
WriteLine("TrimEnd() : '{0}'", " No Spaces ".TrimEnd());
}
}
}
<실행결과>
문자열 분할하기
using static System.Console;
namespace StringSlice
{
class MainApp
{
static void Main(string[] args)
{
string greeting = "Good morning.";
WriteLine(greeting.Substring(0, 5)); // "Good"
WriteLine(greeting.Substring(5)); // "morning"
WriteLine();
string[] arr = greeting.Split(new string[] { " " }, StringSplitOptions.None);
WriteLine("Word Count : {0}", arr.Length);
foreach (string element in arr)
WriteLine("{0}", element);
}
}
}
<실행결과>
문자열 서식 맞추기
using System;
using static System.Console;
namespace StringFormatBasic // StringFormatBasic라는 네임스페이스를 정의합니다.
{
class MainApp // MainApp이라는 클래스를 정의합니다.
{
static void Main(string[] args) // 프로그램의 시작점인 Main 메서드를 정의합니다.
{
// fmt는 문자열 포맷을 정의한 변수입니다.
// {0, -20}은 첫 번째 항목을 왼쪽 정렬하여 20자리 공간을 확보하고 출력합니다.
// {1, -15}는 두 번째 항목을 왼쪽 정렬하여 15자리 공간을 확보하고 출력합니다.
// {2, 30}은 세 번째 항목을 오른쪽 정렬하여 30자리 공간을 확보하고 출력합니다.
string fmt = "{0,-20} {1,-15} {2,30}";
// 각 항목의 제목을 출력합니다. "Publisher", "Author", "Title"이라는 문자열이 포맷에 맞게 출력됩니다.
WriteLine(fmt, "Publisher", "Author", "Title");
// 각 출판사, 저자, 제목에 대한 정보를 포맷에 맞게 출력합니다.
WriteLine(fmt, "Marvel", "Stan Lee", "Iron Man");
WriteLine(fmt, "Hanbit", "Sanghyun Park", "This is C#");
WriteLine(fmt, "Prentice Hall", "K&R", "The C Programming Language");
}
}
}
<실행결과>
'C#' 카테고리의 다른 글
클래스 (0) | 2024.10.30 |
---|---|
메소드로 코드 간추리기 (0) | 2024.10.30 |
코드의 흐름 제어하기 (1) | 2024.10.30 |
데이터를 가공하는 연산자 (2) | 2024.10.29 |
C# 프로그램 만들기 (0) | 2024.10.29 |
댓글