C#/문법 정리 39

C# - 무한루프와 break문

보통 경우에 따라 몇번 반복할지 모를 때가 있다.이런 경우에는 반복문을 무한이 계속하면서 반복문 안에서 끝나는 조건을 체크하여 조건이 맞으면 빠져나오게 한다.무한루프반복되는 반복문을 의미.보통 while문과 for문으로 만든다.while문만드는 무한루프는 반복조건이 항상 true로 만들어 while(true) { } 의 형태가 된다.for문for( ; ; )의 형태로 무한루프를 만들 수 있다.break문루프를 빠져나올 때 사용.예제 코드첫 날 1000원을 저금하고 매일 전 날의 두 배씩을 저금한다고 하면 몇일 만에 100만원을 저금 할 수 있는지 계산하는 프로그램 만들기using static System.Console;//Console단어를 생략(코드길이줄어둠)namespace ConsoleApp1{ ..

C#/문법 정리 2024.08.06

C# - if~else 조건문

if~else문조건식에 따라 프로그램의 흐름을 결정하기 위해 사용되는 조건문이다. if~else문법식은 true와 false로 계산되어야 한다.식의 결과가 true이면 문장1이 실행되고,false이면 문장2가 실행된다.ex)if (식) { 문장1}else { 문장2}단, else 부분 없이 if 부분만 있어도 실행된다.ex)if (식) { 문장1}조건이 2개이상이면 else if 문을 원하는 만큼 추가하여 확장할 수 있다.ex)if (식) { 문장1}elseif (식2) { 문장2}elseif (식3) { 문장3}//...else { 문장n} 예제 코드입력한 년도가 윤년인지,평년인지 판단하여 출력하는 프로그램 만들기(윤년은 "4로 나누어지고, 100으로 나누어지지 않거나 400으로 나누어지는..

C#/문법 정리 2024.07.28

C# - object 타입과 박싱(Boxing),언박싱(Unboxing)

C#에서 모든형식은 상관없이 모두 Object로부터 상속된다.기본형식사용자가 정의한 형식값형식참조형식object 타입모든 데이터의 조상object 타입의 변수에는 어떠한 값이라도 할당가능하다.Objcet와 object는 같은 말이다.참조형식이기 때문에 힙에 데이터를 할당한다.반면 int나 double와 같은 값 형식의 자료는 스택에 데이터를 할당한다.박싱(Boxing)값형식의 변수가 objcet 타입으로 변환되는 것이라 한다.언박싱(Unboxing)object 타입의 변수가 값형식으로 변환되는 것이라 한다.object에서 값형식을 꺼내는 것이다.(int)와 같이 형식변환을 위한 캐스팅이 필요하다.값형식의 변수를 박싱할 경우object로 포장해서 힙에 저장하게 된다.예제 코드변수와 박싱된 object는 서..

C#/문법 정리 2024.07.27

C# - Nullable형

값 형식의 변수null 값을 할당할 수 없다.예를 들어, int i = null;이라 쓰면 컴파일 에러가 난다.C# 2.0부터 nullable형을 도입해서 값 형식의 변수에 null을 할당할 수 있게 했다.nullable형은 Nullable를 사용해서 선언해야 한다.(여기서 T는 데이터 형을 의미한다.)Nullable i = null;nullable형System.Nullable 구조체의 인스턴스이다.예시public struct Nullable where T : struct{ public bool HasValue { get; } public T Value { get; }}Nullable보통의 int에 그 변수가 값을 가지고 있는지 아닌지를 표현하는 플래그를 가지고 있는 셈이다.즉, null인지 ..

C#/문법 정리 2024.07.19

C# - 변수의 초기화와 default

C#에서는 초기화 되지 않은 변수를 사용할 수 없다.특정 값을 할당해주거나, 해당 형식의 기본값(default)을 사용하여 변수를 초기화해야 한다.형식의 따른 기본값 표형식기본값참조형식null숫자 값 형식0boolfalsechar'\0'enum식 (E)0 값이며, 여기서 E는 열거형 식별자이다.struct모든 값 형식 필드를 기본값으로 설정하고모든 참조 형식 필드를 null로 설정하여 생성한 값nullable 형식HasValue 속성은 false이고, Value 속성은 정의되지 않은 인스턴스default메소드를 사용하여 기본값을 할당해 줄 수 있다.C# 7.1부터는 default리터럴을 사용하여 더 간단하게 해당 형식의 기본값으로 초기화할 수 있다.예시int a = default(int);int a = ..

C#/문법 정리 2024.07.18

C# - Null 조건 연산자(Conditional Operator, ?)

C# 프로그래밍에서 null이란?어떤 객체도 참조하지 않는 참조형 변수라는 뜻이다.참조형 변수의 디폴트 값이다.값형은 null일 수 없다.참조형 변수의 속성을 사용할 경우그 변수는 null이 아니어야 한다.null인 참조형에서 속성에 접근할 경우NullReferenceException이 발생한다.예시// s는 null로 초기화 되어 있으므로 s.Length를 체크하는 순간 예외가 발생한다.string s = null;if (s.Length > 1){ //...}// Length속성을 접근할 때마다 이 변수가 null인지 체크해야주어야하는 불편함이 있다.if (s != null && s.Length > 1)// 이러한 불편함을 없애기 위해 null 조건연산자 '?'가 도입되었다.// Null 조건 연..

C#/문법 정리 2024.07.17

배열(Array)과 객체(Object)를 메소드 매개변수로 전달

배열(Array)참조형이다.배열의 이름은 그 배열이 저장된 곳이 참조이다.따라서 메소드를 호출할 때 배열의 이름을 매개변수로 전달하면 배열의 참조가 전달된다.이때 호출된 메소드안에서 배열의 내용을 바꾸면 호출한 곳에서도 배열이 바뀌게 된다.클래스의 객체(Object)참조형이다.배열과 같이 호출된 메소드 안에서 내용을 바꾸면 호출한 곳에서도 바뀌게 된다.예제 코드using System;using static System.Console;//Console단어를 생략(코드길이줄어둠)namespace ConsoleApp1{ class Program { // Student 클래스의 정의이다. class Student { // 멤버로 public ..

C#/문법 정리 2024.07.16

C# - 값 형식(Value Type)과 참조 형식(Reference Type), ref 키워드

값 형식(Value Type)변수가 실제 데이터 값을 저장하는 형식이다.참조 형식(Reference Type)변수가 값이 저장되어 있는 곳의 위치를 저장하는 형식이다.(이 위치를 참조 또는 reference라고 한다.)값 형식과 참조형식 표형식종류값 형식기본 C# 형식(int, double, char, bool 등), enum, struct참조형식object, string, dynamic, class, interface, delegatestring이나 배열은 참조형식이다.굉장히 긴 문자열이나 굉장히 큰 배열도 있을 수 있기 때문에문자열이나 배열의 데이터는 힙영역에 저장하고 스택에는 참조만 저장한다.예제 코드using System;using static System.Console;//Console단어를 생..

C#/문법 정리 2024.07.15

C# - 상수(const)와 readonly

상수(const)변하지 않는 값이다.예를 들어, 길이를 나타내는 단위 중에 미터와 야드가 있다.1미터는 1.09361 야드이다. 이 값은 변하지 않으므로 상수이다.const 키워드로 선언된 상수를 바꾸려고 컴파일 시 에러가 나온다.즉, 프로그래머가 실수로라도 바꾸지 못하게 한다.예시const double meterToYard = 1.09361;readonlyC#에는 "읽기전용"이라는 뜻이다.readonly 키워드를 붙인 변수는 변수를 선언하는 시점과 생성자 메소드에서만 값을 변경할 수 있다.그 외의 경우에 변경하면 오류가 발생한다.const와 readonly의 차이점constreadonly선언될 때 값이 할당된다.실행될 때 또는 객체가 생성자에 의해 초기화될 때 값이 할당된다."Classname.Vari..

C#/문법 정리 2024.07.14

C# - 열거형(enum)

열거형(enum)서로 관련 있는 상수들의 집합을 정의한 것이다.숫자에 특정한 명칭을 붙여주어 의미를 쉽게 이해할 수 있게 하는 용도로 사용된다.예를 들어, 프로그램에서 사과,바나나,오렌지의 3가지 과일을 사용하는데 각각 0, 1, 2 라는 숫자를 부여해서if(fruit == 1)과 같이 사용한다면 나중에 1이 무엇을 의미하는지 이해하기가 어려울 것이다.이럴 때 enum을 사용하면 편한 코드를 구상할 수 있다.예시// 예시 1enum fruit{ Apple, Banana, Orange};Fruit fruit;static void Main(string[] args) { // fruit가 enum Fruit의 Apple와 같다면. if (fruit == Fruit.Apple) ..

C#/문법 정리 2024.07.13