메모리관리, 플랫폼이식 등의 부분을 자유롭게? 등등의 특징을 가진 언어이다.
본 포스팅이 담고 있는 내용은 초록색으로 표시했다.
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(); //함수 불러오기?
}
}
}
- 예시2 출처 - https://blog.hexabrain.net/128
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로 선언된 변수는 이후에 다은 값으로 변환을 주려고 하면 오류가 발생한다