Reference : C# 입문부터 안드로이드, 윈도우 앱(UWP) 동시에 만들기 Xamarin Forms(자마린 폼즈) + Maui(마우이)
< 콘솔에 출력해보기 >
C#에서 가장 기본적인 출력 방법은 'Console.WriteLine()'과 'Console.Write()' 메소드를 사용하는 것이다.
- 'Console.WriteLine()' : 출력 후 줄바꿈이 일어난다.
- 'Console.Write()' : 줄바꿈 없이 출력한다.
Console.WriteLine("Hello, World!");
Console.Write("Hello, C#");
위 코드를 실행하면, 다음과 같은 출력이 콘솔에 나타난다.
Hello, World!
Hello, C#
여기서 "Hello,World!" 다음 새로운 줄에서 "Hello,C#"가 출력되는 것을 볼 수 있다.
< 콘솔에 입력받기 >
C#에서 사용자로부터 입력을 받기 위해서는 'Console.ReadLine()' 메소드를 사용한다.
Console.WriteLine("Enter your name:");
string name = Console.ReadLine();
Console.WriteLine($"Hello, {name}!");
위 코드를 실행하면 콘솔이 사용자로부터 이름을 입력받고, 입력받은 이름을 사용하여 메세지를 출력한다.
< 데이터 타입 알아보기 >
int number = 10;
double pi = 3.141592;
char character = 'A';
bool isTrue = true;
string name = "C#";
< 데이터타입 사용방법과 변수 상수 선언 >
C#에서의 변수와 상수 선언
C#에서 변수는 '변수타입 변수명 = 초기값;' 형태로 선언한다. 변수는 값이 변경될 수 있다.
상수는 'const 상수타입 상수명 = 초기값;'의 형태로 선언한다. 상수는 한번 선언되면 값을 변경할 수 없다.
string name = "홍길동";
name = "1";
name = "0.5"; //string은 숫자가 아닌 문자열 이다.
char letter = 'A'; //char는 ''로 한다. ""로 할 시, 오류
int price = 100;
// price = 0.5; //소숫점은 넣을 수 없다.
double b = 0.05;
decimal sale = Convert.ToDecimal(1.5); //decimal은 Convert.ToDecimal()로 형변환을 알려주고 넣거나
decimal sale_price;
sale_price = price - (price * sale); //선언 하고 난 뒤 결과 값을 받을 수 있다.
Console.WriteLine("할인된 가격은 {0}", sale_price);
Console.ReadLine();
const string str = "홍길동"; //const는 상수로서 변경 불가능 하다.
< Object Var Dynamic 타입과 연산자 >
C#은 Object, Var, Dynamic이라는 특별한 타입을 가지고 있다.
- Object: C#의 모든 타입은 Object 타입에서 파생되므로, 어떤 타입의 데이터도 저장할 수 있다.
- Var: 컴파일 타임에 타입이 결정되며, 선언 시 초기화를 해주어야 한다.
- Dynamic: 런타임에 타입이 결정되며, 선언 시 초기화를 하지 않아도 된다.
이들 타입과 함께 하는 사용하는 연산자에는 사칙연산자(+,-,*,/),비교연산자(==,!=,<,>,<=,>=)등이 있다.
object aa = 11;
aa = "감자";
int a = Convert.ToInt32(aa); //object에서는 다른 형으로 재할당 시, Convert.Toint32(aa);로 해야 한다.
object aaa = "a";
Console.WriteLine("aa값은: {0}", aa);
var bb = 22;
//bb = "b"; //var type은 처음에 숫자가 들어가면, 그 다음에 문자로 바꿀 수 없다.
Console.WriteLine("bb값은: {0}", bb);
dynamic cc = 33;
cc = "감자";//형을 바꿔서 넣을 수 있다.
dynamic ccc = "c";
cc = "한글";
int c = cc;//실행되는 시점에서 검사를 하기에, 실행하는 시점에서만 오류인지 아닌지 알 수 있다.
Console.WriteLine("cc값은: {0}", cc);
Console.ReadLine();
//연산자
int a = 10;
int b = 5;
int c = a + b;
Console.WriteLine("a+b={0}", c);
Console.WriteLine("a+b={0}", a + b);
Console.WriteLine("a+b={0}", a - b);
Console.WriteLine("a*b={0}", a * b);
Console.WriteLine("a/b={0}", a / b);
Console.ReadLine();
int d;
d = 5 / 2;
Console.WriteLine("d의 값은? {0}", d);
double e;
e = 5 / 2;
Console.WriteLine("e의 값은? {0}", e);
double f;
f = 5.0 / 2;
Console.WriteLine("f의 값은? {0}", f);
float g;
g = 5f / 2f;
Console.WriteLine("g의 값은? {0}", g);
Console.ReadLine();
< 증감연산자,산술연산자 >
C#에서는 증감연산자와 산술연산자를 지원한다.
증감연산자 :
- ++ : 값을 1 증가 시킨다.
- -- : 값을 1 감소시킨다.
산술연산자 :
- + : 더하기 연산
- - : 빼기 연산
- * : 곱하기 연산
- / : 나누기 연산
- % : 나머지 연산
/*
연산자 종류
증감연산자 ++,--
산술연산자 +,-,*,/,%
*/
int a = 1;
int b = 2;
int c;
c = ++a;
Console.WriteLine("선행연산자 a의 값 {0} c의 값{1}", a, c); //a의 값 2 c의 값 2
a = 1;
c = a++;
Console.WriteLine("선행연산자 a의 값 {0} c의 값{1}", a, c); //a의 값 2 c의 값 1
a = 1;
c = --a;
Console.WriteLine("선행연산자 a의 값 {0} c의 값 {1}", a, c); //a의 값 0 c의 값 0
c = a--;
Console.WriteLine("선행연산자 a의 값 {0} c의 값 {1}", a, c); //a의 값 -1 c의 값 0
Console.WriteLine("나머지값 {0}", 5 % 2); //나머지 값 1
< IF문 관계연산자 논리연산자 >
C#에서는 if문,관계연산자,논리연산자를 사용하여 조건에 따라 코드를 실행할 수 있다.
if문 :
- if문은 조건식이 참일 때 해당 코드 블록을 실행한다.
관계연산자:
- ==:같다.
- != : 다르다.
- < : 작다
- > : 크다.
- <= : 작거나 같다.
- >= : 크거나 같다.
논리 연산자 :
&& : 논리 AND 연산, 모든 조건이 참일 때, 참을 반환한다.
|| : 논리 OR 연산, 조건 중 하나 이상이 참일 때 참을 반환한다.
! : 논리 NOT 연산 , 조건의 반대를 반환한다.
/*
관계 연산자 <,>,==,!=,<=,>=
논리 연산자 &&,||,!
*/
int a = 3;
if (a == 1)
{
Console.WriteLine("1과 같음");
}
else if (a >= 1)
{
Console.WriteLine("1보다 크거나 같음");
}
else if (a < 1)
{
Console.WriteLine("1보다 작음");
}
else
{
Console.WriteLine("해당없음");
}
int b, c;
b = 100;
c = 200;
if (b == 100 && c == 300)
{
Console.WriteLine("1");
}
else if (b == 100 || c == 300)
{
Console.WriteLine("1");
}
else if (b > 100 || c == 300)
{
Console.WriteLine("3");
}
else if (b != 100 || c != 300)
{
Console.WriteLine("4");
}
< 형변환 암시적 명시적 변환 >
C#에서의 데이터 타입간 암시적 변환과 명시적 변환을 사용할 수 있다.
- 암시적 변환: 데이터 손실이 없는 경우, 컴파일러가 자동으로 변환을 수행한다.
- 명시적 변환: 데이터 손실이 있는 경우, 개발자가 명시적으로 변환을 지시해야 한다.
/*
타입 자동 변환되는 유형
byte short,ushort,int,unit,long,ulong,float,double,decimal
sbyte short,int,long,float,double,decimal
short int,long,float,double,decimal
ushort int,unit,long,ulong,float,double,decimal
int long,float,double,decimal
uint long,ulong,float,double,decimal
long float,double,decimal
ulong float,double,decimal
float double
char ushort,int,unit,long,ulong,float,double,decimal
var 암시적 변환 타입
*/
char a1 = 'a';
char a2 = 'A';
Console.WriteLine("a1의 값:" + a1);
Console.WriteLine("a2의 값:" + a2);
ushort change_a1, change_a2;
change_a1 = a1;
change_a2 = a2;
Console.WriteLine("change_a1의 값:" + change_a1);
Console.WriteLine("change_a2의 값:" + change_a2);
byte ch_byte_a1, ch_byte_a2;
ch_byte_a1 = (byte)a1;
ch_byte_a2 = Convert.ToByte(a2);
Console.WriteLine("ch_byte_a1의 값:" + ch_byte_a1);
Console.WriteLine("ch_byte_a2의 값:" + ch_byte_a2);
< 소수점 자리수 조절, 문자열 코드 >
C#에서는 소수점 자리수 조절을 위해 'Math.Round()', 문자열 조절을 위해 'string.Format()'을 사용할 수 있다.
double number = 3.141592;
number = Math.Round(number, 2); // 소수점 아래 두 자리까지 반올림, number는 3.14
string str = string.Format("{0:N2}", number); // 숫자를 문자열로 변환하며 소수점 아래 두 자리까지 표현, str은 "3.14"
< For문 배열 메소드 사용 방법 >
C#에서 'for'문을 사용하여 반복 작업을 처리하고, 배열을 사용하여 어러 값을 저장 하며, 메소드를 사용하여 작업을 재사용할 수 있다.
int[] array = new int[5] {1, 2, 3, 4, 5};
for(int i = 0; i < array.Length; i++)
{
array[i] = MultiplyByTwo(array[i]);
Console.WriteLine(array[i]);
}
int MultiplyByTwo(int number)
{
return number * 2;
}
< 전역변수 지역변수 열거형 Enum >
C#에서 전역변수는 클래스 내 어디서는 접근 가능한 변수이며, 지역변수는 특정 블록(메소드,if문 등) 내에서만 사용하능한 변수이다. 열거형(Enum)은 여러 개의 상수를 하나의 타입으로 묶어놓은 것이다.
using System;
namespace ConsoleApp2
{
internal class Program
{
static int globalVar = 10; // 전역 변수
enum Days { Sun, Mon, Tue, Wed, Thu, Fri, Sat }; // 열거형
static void Main(string[] args)
{
int localVar = 20; // 지역 변수
Console.WriteLine(globalVar);
Console.WriteLine(localVar);
Days day = Days.Mon;
Console.WriteLine(day);
}
}
}
< 구조체 Struct >
C#에서 구조체(Struct)는 관련된 데이터를 하나의 복합 데이터 타입으로 그룹화하는 방법을 제공한다.
struct Point
{
public int x, y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
public void DisplayPoint()
{
Console.WriteLine($"Point: ({x},{y})");
}
}
static void Main()
{
Point point = new Point(3, 4);
point.DisplayPoint();
}
< Switch문 >
C#에서 'switch'문을 사용하면 어러 가지 경우에 따른 작업을 처리할 수 있다.
static void Main()
{
int number = 2;
switch(number)
{
case 1:
Console.WriteLine("Number is 1");
break;
case 2:
Console.WriteLine("Number is 2");
break;
default:
Console.WriteLine("Number is not 1 or 2");
break;
}
}
< While문 Do While문 >
C#에서 'while'문과 'do while'문을 사용하여 조건에 따라 반복 작업을 처리할 수 있다.
static void Main()
{
int number = 1;
while(number <= 5)
{
Console.WriteLine(number);
number++;
}
number = 1;
do
{
Console.WriteLine(number);
number++;
}
while(number <= 5);
}
< Foreach문 >
C#에서 foreach문을 사용하여 컬렉션의 모든 요소를 순회할 수 있다..
static void Main()
{
int[] numbers = new int[5] {1, 2, 3, 4, 5};
foreach(int number in numbers)
{
Console.WriteLine(number);
}
}
< 클래스 Class 필드 속성 >
C#에서 클래스(Class)는 객체를 생성하는 템플릿이며, 필드는 클래스 내의 변수를, 속성은 클래스 내의 메소드를 정의하는 데 사용된다.
class Program
{
public class Car
{
private string color; // 필드
public string Color // 속성
{
get { return color; }
set { color = value; }
}
}
static void Main()
{
Car car = new Car();
car.Color = "Red";
Console.WriteLine(car.Color);
}
}
< 클래스 정적 Static 상수 Const >
C#에서 클래스 내의 멤버를 'static'으로 선언하면, 그 멤버는 클래스의 인스턴스가 아닌 클래스 자체에 속하게 된다. 'const'는 상수를 선언하는 데 사용되며, 선언과 동시에 초기화 되어야 하고, 그 값을 변경할 수 없다.
class Program
{
public class Circle
{
public const double PI = 3.14; // 상수
public static int count = 0; // 정적 필드
public Circle()
{
count++;
}
}
static void Main()
{
Console.WriteLine($"PI: {Circle.PI}");
Circle c1 = new Circle();
Circle c2 = new Circle();
Console.WriteLine($"Created {Circle.count} circles");
}
}
< 클래스 메소드 정적 메소드 참조형 Out >
C#에서 클래스 메소드는 특정 클래스의 인스턴스에 연결되어 작동하며, 정적 메소드는 클래스 자체에 연결되어 작동한다. out 키워드는 메소드에서 여러 값을 반환할 때 사용된다.
class Program
{
public class Calculator
{
public static void Multiply(int a, int b, out int result)
{
result = a * b;
}
}
static void Main()
{
int result;
Calculator.Multiply(3, 4, out result);
Console.WriteLine(result);
}
}
< 속성 정의 >
C#에서 속성(Property)은 클래스, 구조체, 인터페이스의 멤버로, 외부에서 접근할 수 있는 값이다. get과 set 접근자를 사용하여 속성 값을 읽거나 변경할 수 있다.
class Program
{
public class Student
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}
static void Main()
{
Student student = new Student();
student.Name = "John Doe";
Console.WriteLine(student.Name);
}
}
'C#' 카테고리의 다른 글
MS-SQL 및 SSMS 설치 방법 (0) | 2023.06.04 |
---|---|
C# 문법 정리 ② (0) | 2023.06.04 |
C#으로 프로그램 만들기 (0) | 2023.06.02 |
비주얼 스튜디오 설치 및 환경설정 (For Windows) (0) | 2023.06.02 |
C#의 등장의 역사 (0) | 2023.06.02 |