본문 바로가기
배워봅시다/기타(언어,prg등)

C#_3일차

by JJOMKKO 2024. 1. 2.
반응형

StringTest2 폴더

직전에 배운 내용 하단에 내용 추가.

파일 생성시 숫자가 앞에 오는건 좋은 형태가 아니다.
그러나 지금은 교육중이니까 편의상 날짜를 기재하여 모아보기로 한다.

 

한개의 솔루션에서 여러개의 프로젝트를 생성할 때는
ㅁ솔루션 및~배치(D) 의 체크를 풀어주는게 좋다.

 

 

우측에 생성한 솔루션 우클릭-속성 에서 전역Using
지금까지 박스 체크 풀어서 사용했는데 이제 안하기로함.
교육때는 안해도 될 듯 하다.

 

하나의 솔루션 생성 후
 파일-추가-새프로젝트 로 프로젝트를 생성한다.
우측 솔루션 탐색기에서 프로젝트들 리스트 확인 가능.
여러 프로젝트를 탭으로 열 수 있게됨.

 

프로젝트가 많은데 각각 실행해야하는 경우
기본적으로 앞서 만든것을 기준으로 디버깅 됨. 
우측 프로젝트 맨 위 상단의 리스트 우클릭-속성-현재 선택 영역 버튼 활성화

 


namespace StringTest3
{
    internal class stringTest3
    {
       static void Main(string[] args)
        {
            DateTime dateTime = DateTime.Now; 
            //=> 현재 날짜를 표시한다.

            Console.WriteLine(dateTime);
            //날짜서식(사용자 지정 서식)
            // => d / dd : 일, ddd / dddd : 요일
            Console.WriteLine(dateTime.ToString("d / dd / ddd /dddd "));

            // => M / MM : 월 , MMM / MMMM : 월약어 . 한글패치 되어있어서 약어 적용 안보임.
            Console.WriteLine(dateTime.ToString("M / MM / MMM / MMMM "));

            // => y / yy /yyyy : 년도
            // => h / hh : 12시간 형식의 시 , H / HH : 24시간 형식의 시
            // => m / mm : 분
            // => s / ss : 초
            // => t : AM / PM 표시를 A, P 로 표시
            // => tt : AM / PM 표시 두자리 
            Console.WriteLine(dateTime.ToString());  //2024-01-02 오후 3:15:20 이렇게 표시됨
            Console.WriteLine(dateTime.ToString("yyyy.M.d h:m:s"));
            Console.WriteLine(dateTime.ToString("yyyy.MMMM.dddd tt h:m:s"));
            Console.WriteLine(dateTime.ToString("yyyy년 MMM dd일 (ddd) tt:HH:ss"));

            // Tip. 커서가 위치한 상태에서 ctrl+C 하면 한 줄 다 복사됨. 드래그 안해도 됨.

            //날짜서식(표준서식)
            // => d : 간단한 날짜 => 2024-01-02
            // => D : 자세한 날짜 => 2024년 1월 2일 화요일
            // => F : 전체날짜 / 시간 패턴(자세한 시간) => 2024년 1월 2일 화요일 오후 3:20:20
            // => f : 전체날짜 / 시간 패턴(간단한 시간) => 2024년 1월 2일 화요일 오후 3:21
            Console.WriteLine(dateTime.ToString("d"));
            Console.WriteLine(dateTime.ToString("D"));
            Console.WriteLine(dateTime.ToString("F"));
            Console.WriteLine(dateTime.ToString("f"));
            // => g : 일반 날짜 / 시간패턴(간단한 시간) => 2024-1-2 오후 3:24
            // => G : 일반 날짜 / 시간패턴(자세한 시간) => 2024-1-2 오후 3:24:30
            // => t : 간단한 시간 패턴
            // => T : 자세한 시간 패턴
            Console.WriteLine(dateTime.ToString("g"));
            Console.WriteLine(dateTime.ToString("G"));
            Console.WriteLine(dateTime.ToString("t"));
            Console.WriteLine(dateTime.ToString("T"));
            // => Y/y : 연도 / 월
            // => M/m : 월 / 일
            // => u : 정렬가능 범용 날짜 / 시간패턴
            // => U : 범용 전체 날짜 / 시간 패턴
            // => s : 정렬 가능한 날짜 / 시간
            Console.WriteLine(dateTime.ToString("Y"));
            Console.WriteLine(dateTime.ToString("y"));
            Console.WriteLine(dateTime.ToString("M"));
            Console.WriteLine(dateTime.ToString("m"));
            Console.WriteLine(dateTime.ToString("u")); // 2024-01-02 15:29:08Z 로 표시됨
            Console.WriteLine(dateTime.ToString("U"));
            Console.WriteLine(dateTime.ToString("s"));  // 2024 - 01 - 02T15: 29:08 로 표시됨


        }
    }
}


namespace ReadLineTest2
{
    internal class ReadLineTest2
    {
        static void Main(string[] args)
        {

            //// 숫자 입력 받기
            //Console.Write("숫자를 입력하세요. :  ");
            //string input = Console.ReadLine();
            //Console.WriteLine(Convert.ToInt32(input));
            //Console.WriteLine(Convert.ToInt32(input) + 15);
            //Console.WriteLine(input + 15); // 이렇게 하면 그냥 입력한 값과 더하는 값을 붙여서 내보냄
            //                               // Console.WriteLine((int)input + 15 ); //에러

            //// Convert.ToInt32() : 정수로 변환
            //// Convert.ToSingle() : 실수로 변환
            //// Convert.ToChar() : 문자로 변환
            //// ToStrint() : 문자열로 변환

            //// int.Parse() : 정수로 변환
            //// int.TryParse() : 정수변환 문자열에 정수가 없으면 false 반환


            //Console.Write("숫자를 입력하세요. : ");
            //int num = int.Parse(Console.ReadLine());
            //Console.WriteLine("입력한 숫자는 {0} 입니다.", num);

            //int i;
            //Console.Write("입력>> ");
            //string input2 = Console.ReadLine();
            //Console.WriteLine(int.TryParse(input2, out i)); // 숫자만 있으면 True, 문자 섞이면 false 로 표시됨.

            //Console.Write("숫자 입력 >> ");
            //num = Convert.ToInt32(Console.ReadLine());
            //Console.WriteLine(num + 10);

            //위에거 전부 컨트롤+K,C 로 주석처리함




            Console.Write("문자열 입력 : ");
            string str = Console.ReadLine();
            string str2 = str.Substring(2, 1);  //0,1,2 니까 3번째 글자 를 1개 표시함
            Console.WriteLine(str2);

            Console.Write("문자열 입력 : ");
            str = Console.ReadLine().Substring(3, 1); //0,1,2,3 니까 4번째 글자 를 1개 표시함
            Console.WriteLine(str);
            Console.Write("문자열 입력 : ");
            char ch = Convert.ToChar(Console.ReadLine().Substring(0, 1));
            Console.WriteLine(ch);




        }
    }
}

 


namespace BoxingInboxingTest
{
    internal class BoxingInboxingTest
    {
        static void Main(string[] args)
        {
            // 값형식과 참조형식
            // 변수 => 저장된 값의 메모리 주소
            // 2개의 메모리 영역 : 힙 / 스택 영역
            // 스택 영역 : 가장 마지막에 넣은 데이터를 먼저 꺼내는 선형적 구조
            // 힙 영역 : 계층적 구조. 저장되는 순서가 중요하지 않다. 임의의 순서로 저장함.
            // 변수 선언시 스택에 공간이 할당됨
            // => 스택에 값이 저장되는 형식을 값형식이라고 한다.
            // => 힙에 값이 저장되는 형식을 참조 형식이라고 한다.
            // 참조형식은 스택과 힙 메모리를 둘 다 사용함.
            // => 힙에는 실질적인 값을, 스택에는 값의 주소를 저장한다.
            // int(정수형 변수들) / float / double / decimal / bool / enum => 값 형식
            // string / object => 참조형식

            int a;
            // Concole.WriteLine(a); => 에러: a가 초기화되지 않음.
            string str;
            // Concole.WriteLine(str); => 에러: str가 초기화되지 않음.
            // a = null; => 에러 : int는 null값을 사용할 수 없다.
            str = null;
            // null 키워드 => 개체를 참조하지 않는 null 참조를 나타내는 리터럴
            //            => 아무것도 참조하지 않는 값. => 참조 형식 변수의 기본값.

            // boxing : 값형식에서 object 형식으로 변환 => 내부에서 래핑하고 힙에 저장 /암시적(자동)
            // unboxing : objest 형식에서 값형식으로 변환

            // 박싱
            int i = 123; // 값형식
            // object obj => 참조형식, 힙 영역에 공간 생선
            object obj = i; // 암시적 박싱
            // object obj = (object)i; // 명시적 박싱

            // 언박싱
            int j = (int)obj; // 암시적 언박싱

            Console.WriteLine(i);
            Console.WriteLine(j);








        }
    }
}


namespace OperatorTest
{
    internal class OperatorTest
    {
        static void Main(string[] args)
        {
            // 산술 연산자 : +, -, *, /, % (나머지 구하기)
            Console.WriteLine(5.3 % 2.1);  //1.0999999999999996 표출됨
            // 증감 연산자 : ++(1증가), --(1감소)
            // a++(후위 연산) : 연산 후 1 증가
            // => a의 값을 다른 연산에 먼저 사용하고 값을 1증가 시킴
            // ++a(전위 연산) : 1증가 후 연산
            // => a의 값을 1증가하고 연산에 사용
            // a--(후위 연산) : 연산 후 1감소
            // => a의 값을 다른 연산에 먼저 사용하고 값을 1감소 시킴
            // --a(전위 연산) : 1감소 후 연산
            // => a의 값을 1감소하고 연산의 사용 

            int a = 1, b, c;
            a++; // a = a + 1
            Console.WriteLine("a = " + a);
            ++a;
            Console.WriteLine("a = " + a);
            b = a++;
            Console.WriteLine("a = " + a+ ", b = " + b);
            c = ++a;
            Console.WriteLine("a = " + a + ", c = " + c);

            Console.WriteLine(--a); //4 
            Console.WriteLine(a); //4
            Console.WriteLine(a--); //4
            Console.WriteLine(a); //3


            int d = 1;
            int e = ++d + ++d + ++d + ++d;  //++ 계산 순위가 제일 높음. ++먼저 계산 후 합치는 + 해주는 것임. 그리고 순서는 역순으로 계산됨(?)
            Console.WriteLine($"d = {d}, e = {e}");

            //조건식
            // 관계연산자 : 연산의 결과는 참(true) 또는 거짓(false) 이다.
            // => > 초과 , < 미만 , >= 이상 , <= 이하 , != 같지 않음 , == 같다
            Console.WriteLine(3 > 4);
            Console.WriteLine(1 <= 2);

            char c1 = 'A';
            char c2 = 'a';
            Console.WriteLine(c1 == c2);



        }
    }
}

반응형

댓글