소프트웨어 공부

C# 공부하기 (01) - visual studio로 개발 환경구축, 변수공부하기

띠요용 2024. 1. 31. 17:14

 

메모리관리, 플랫폼이식 등의 부분을 자유롭게? 등등의 특징을 가진 언어이다.

 

본 포스팅이 담고 있는 내용은 초록색으로 표시했다.

01. C# 개발을 위한 환경(visual studio 설치는 다루고 있지 않음)과 .NET editor 소개
02. 바로 코드를 입력해보기 위한 기초 사용법 (WriteLine 메소드)
03. 데이타(변수) 관련한 기초정보 및 특징 기술
04. 본격적인 변수와 상수 선언 연습

 

  • .net 데스크톱 개발이 필요
  • visual studio 이용하여 빌드하거나 또는 .NET Framework에서 제공하는 csc.exe라는 컴파일러를 이용하여 빌드할 수 있다.
  • .cs 확장자를 사용하며, .h가 없다 (즉, 헤더파일이 없다)

 

 

01. visual stuio 2022 과 .NET editor

 

1. 이미 설치 했던 visual studio에서 새프로젝트 만들기를 선택

C# 콘솔앱으로 설정하여 진행하려는데 없어서 스크롤를 내리면 나타나는 추가 도구 및 기능 설치를 클릭하여 .NET 데스크톱 개발이 설치되어있는지 확인했다. 알고보니 언어를 C++로 둔채로 찾아봐서 없었을 뿐 이었다.

 

2. 이름과 추가정보

 

 

7.0을 선택하고 최상위 문 사용안함을 체크했다.

 

 

 

MainApp.cs 파일로 이름을 변경하고, 해당 파일에서 프로그램을 작성하며 연습하면 된다.

 

한편, 공부하는 내용에 따라서는 좀더 간단하게 연습하는 방법도 존재한다

 

Introduction to C# - become familiar with the development tools - C# | Microsoft Learn

 

Introduction to C# - become familiar with the development tools - C#

This article provides a basic introduction to the tools you'll use to develop C# and .NET Applications on your machine.

learn.microsoft.com

 

로 접속하여 tutorial을 따라가기위해 들어가보면 해당 이론에서 아래와 같은 버튼을 볼 수 있는데,

클릭하면, 왼편에는 상세한 이론이 나오고 동시에 오른쪽 창에서 직접 코드를 입력해보고 그 결과를 바로 확인할 수 있도록 공부 프로그램

.NET Editor

편리하다ㅜㅠㅜ

을 제공해준다. 초반에 빠르고 쉽게 접근하려는 사람에게는 정말 유용할 것 같다.

 

두가지를 혼용하여 잘 공부하면 좋을것 같다

 

 

02. 사용

 

1. Main()메서드가 반드시 있어야하며, static 으로 선언된다. 메소드의 인자는 string[]이다.

2. 첨삭?은 //와 /* */ 로 한다

3. 변수 선언에서 대소문자 구별함 (case-sensitive)

4. 출력하는 것을 가장 먼저 알아두어야 스스로 공부가 잘 되는거 같다

//프린트하기

int a = 1;
int b = 2;
int c = 3;
Console.WriteLine("a={0}, b={1}, c={2}", a, b, c);
// a=1, b=2, c=3 라고 출력한다

char a = '귀';
string b = "엽다";
Console.WriteLine("{0}{1}", a, b);
//귀엽다 라고 출력한다

 

출력은 Format Specifier라는 방식을 사용한다고 한다. 위 프린트 예시를 통해 짐작할 수 있듯이 내용, 넣을 변수 로 크게 구분하여 ( )안을 채우고 있다. 변수를 나열하는 부분에서는 더하기 빼기같은 연산자도 사용가능하다. type은 꼭 넣지 않아도 된다

Console.WriteLine( "{인덱스:type}를 포함한 출력하고 싶은 내용", 인덱스 순서대로 원하는 변수를 나열(,로 구분하여) )

 

5. ctrl + F5 : 빌드, 저장, 디버깅?

03. 변수 기초이론 및 특징

 

1. ALU는 정수처리 장치, FPU는 부동소수점(고정아님 주의)처리 장치

 

2. 데이터 형식에 따라서 유형과 크기가 달라짐

 

3. Stack (자동메모리:수명조절불가) - 책을 쌓는 방식으로 데이터를 저장하는 메모리 >> 값형식(Value Type)

 

4. Heap (자유저장소:수명조절가능) - 자유롭게 저장하는 메모리 >> 참조형식(Reference Type), 박싱 언박싱, 

 

5. C#이 사용하는 데이터형식 (참고로 기본적으로는 .NET 데이타 타입을 사용하는 것을 알고는 있어야)

  • 수 형식  - 정수, 부동소수점
  • 논리 형식(bool)
  • 문자열 형식 - char는 작은 따옴표, string는 큰따옴표
  • object 형식
  • 복합데이터 형식 - class, 구조체, 튜플 등
  • 각 변수는 클래스의 프로퍼티도 이용할 수 있다

6. 여러가지 방식의 변수선언

  • 상수 (Constant) - 처음 선언될때로 그대로 계속 유지되는 변수로 선언, const를 이용해서 선언
  • 열거 형식 (Enumerated type) - 하나의 이름으로 묶여서 선언된 상수들의 집합, enum 을 이용해서 선언
  • var 키워드 - 컴파일러가 알아서 자동으로 형식을 유추해줌, 지역 변수에만 사용할 수 있는 방식
  • 접미어(suffix)로 타입배정 - L, U, UL, F, D, M과 같이 접미어를 넣어 타입을 정확하게 지정
  • ?를 선언 타입뒤에 붙이면 null도 들어갈 수 있는 변수로 타입이 배정되는게 특이함

 

 

04. 변수 및 상수 연습

 

1. 변수

더보기
  • 필드 - 클래스 내에서의 전역변수
  • 로컬 - 메소드 등 내에서만 사용하는 지역변수
  • 필드의 경우에는 값을 할당하지 않아도 0이 default로 할당된다. 하지만 로컬은 할당을 반드시 해야한다.
  • 예시1 출처 - https://www.csharpstudy.com/CSharp/CSharp-variable.aspx
using System;

namespace ConsoleApplication1
{
    class CSVar
    {
        //필드 (클래스 내에서 공통적으로 사용되는 전역 변수)
        int globalVar; // 
        const int MAX = 1024;

        public void Method1()
        {
            // 로컬변수
            int localVar;

            // 아래 할당이 없으면 에러 발생
            localVar = 100;

            Console.WriteLine(globalVar); //출력
            Console.WriteLine(localVar); //출력
        }
    }

    class Program
    {
        // 모든 프로그램에는 Main()이 있어야 함.
        static void Main(string[] args)
        {
            // 테스트
            CSVar obj = new CSVar();  //객체를 생성하는 방식 ( )안에 파라미터를 넣는다
            obj.Method1(); //함수 불러오기?
        }
    }
}

 

using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int a;
            a = 1000;

            Console.WriteLine(a);
        }
    }
}

 

  • 형식변환 : 정수에서 실수로 가능경우에는 딱히 불필요하지만(Implicit conversions) 반대의 경우에는 변환하여 대입해야한다.(Explicit conversions)
(변환하고싶은형식)변환하려는 변수

2. 상수

더보기
  • 상수는 기존의 선언 앞에 const만 붙이면 된다
  • const로 선언된 변수는 이후에 다은 값으로 변환을 주려고 하면 오류가 발생한다