c# 공부 2024.05.02
C#이란?
C# (C sharp)은 마이크로소프트에서 개발한 다목적 프로그래밍 언어이다. 데스크톱, 웹, 모바일, 클라우드 및 게임 애플리케이션 등 다양한 종류의 애플리케이션을 개발하는 데 널리 사용됨.
C#에 대한 주요한 특징들:
- 객체 지향: C#은 객체 지향 프로그래밍 언어로, 실제 세계 개체를 속성(프로퍼티)과 동작(메서드)을 가진 객체로 모델링할 수 있다. 이러한 접근 방식은 코드의 조직화, 재사용성 및 유지 보수성을 촉진함.
- 구문 유사성: C#의 구문은 C, C++, Java와 유사하여 해당 언어에 익숙한 개발자들이 C#을 배우는 데 도움이 됨.
- 플랫폼 독립성: C#은 .NET 프레임워크를 통해 플랫폼 독립적으로 설계되었다. 즉, C#으로 작성된 애플리케이션은 Windows, macOS, Linux 및 iOS 및 Android와 같은 모바일 플랫폼에서도 실행될 수 있다.
- 관리형 언어: C#은 .NET 프레임워크에서 제공하는 공용 언어 런타임 (CLR) 환경에서 실행되는 관리형 언어이다. CLR은 메모리 관리, 보안 및 예외 처리와 같은 작업을 처리하여 개발자가 더 안전하고 신뢰할 수 있는 코드를 작성할 수 있도록 지원함.
- 풍부한 표준 라이브러리: C#에는 풍부한 표준 라이브러리인 .NET Framework 클래스 라이브러리 (FCL)가 함께 제공되며, 파일 I/O, 네트워킹, 데이터베이스 액세스 및 사용자 인터페이스 개발과 같은 일반적인 프로그래밍 작업에 대한 다양한 클래스 및 함수를 제공한다.
총론적으로 C#은 기업 소프트웨어 개발부터 게임 개발에 이르기까지 다양한 분야에서 사용되는 강력하고 다재다능한 프로그래밍 언어임.
개발환경구축
- 비주얼 스튜디오 다운로드
- c# 설치
05-02 수업
- 책은 c# 입문을 사용 (백견불여일타)
- 한글 프로그램이 .net 기반으로 만들어짐
- 목차를 보고 전체 그림 보기
- 사용자에게 소스 파일을 주면 안되고 사용자에게는 실행파일을 줘야함 그래서 실행파일로 빌드가 필요
파일 > 새로만들기 > 프로젝트 콘솔앱으로 .net 만들고 프로젝트 이름을 MyFirstApp 으로 하고 같은 경로 체크 해서 실행
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System; // System 네임스페이스를 사용합니다. 기본적인 시스템 함수를 포함하고 있습니다.
using System.Collections.Generic; // 컬렉션을 다루는 기능을 사용합니다.
using System.Linq; // LINQ 쿼리를 사용하는 기능을 포함합니다.
using System.Text; // 텍스트 처리와 관련된 기능을 사용합니다.
using System.Threading.Tasks; // 멀티스레딩과 관련된 작업을 처리할 때 사용합니다.
namespace MyFirstApp // 'MyFirstApp' 네임스페이스를 정의합니다. 네임스페이스는 클래스와 다른 요소들을 그룹화하는 방법을 제공합니다.
{
internal class Program // 'Program' 클래스를 정의합니다. 이 클래스는 프로그램의 진입점을 포함합니다.
{
static void Main(string[] args) // Main 메서드는 프로그램의 진입점입니다. 프로그램 실행 시 최초로 호출됩니다.
{
Console.WriteLine("Hello World!"); // 콘솔에 "Hello World!"를 출력합니다.
}
}
}
위에 사진에 보면 빌드 파일 경로가 보임
빌드 저 코드대로 그냥 하고 실행파일 실행해보면 순삭당함.
1
2
System.Console.WriteLine("종료하려면 아무키나 누르던가 말던가"); // 콘솔에 "Hello World!"를 출력합니다.
System.Console.ReadKey();
이 코드를 추가하고 다시 빌드를 하면 이제 cmd창이 계속 켜있음.
MSDN 은 마이크로소프트 개발자 문서 여기에 설명서가 있음 c#가이드문서
변수타입 object, var, dynamic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System; // System 네임스페이스를 사용합니다. 기본적인 시스템 함수를 포함하고 있습니다.
using System.Collections.Generic; // 컬렉션을 다루는 기능을 사용합니다.
using System.Linq; // LINQ 쿼리를 사용하는 기능을 포함합니다.
using System.Text; // 텍스트 처리와 관련된 기능을 사용합니다.
using System.Threading.Tasks; // 멀티스레딩과 관련된 작업을 처리할 때 사용합니다.
namespace RoadBook.CsharpBasic.Chapter02.Examples // 'RoadBook.CsharpBasic.Chapter02.Examples' 네임스페이스를 정의합니다.
{
internal class Ex004 // 'Ex004' 클래스를 정의합니다. 이 클래스는 변수 유형을 다루는 예제를 포함합니다.
{
public void Run() // 'Run' 메서드는 변수들을 초기화하고 결과를 콘솔에 출력하는 작업을 수행합니다.
{
object objValue = 1; // 'object' 타입으로 'objValue' 변수를 선언하고 초기화합니다. 모든 타입의 데이터를 저장할 수 있습니다.
var vValue = "var"; // 'var' 키워드를 사용하여 'vValue' 변수를 선언하고 초기화합니다. 컴파일러가 자동으로 타입을 추론합니다.
dynamic dValue = true; // 'dynamic' 타입으로 'dValue' 변수를 선언하고 초기화합니다. 실행 시 타입이 결정됩니다.
Console.WriteLine("obj 변수 값은 {0}", objValue); // 'objValue' 변수의 값을 콘솔에 출력합니다.
Console.WriteLine("var 변수 값은 {0}", vValue); // 'vValue' 변수의 값을 콘솔에 출력합니다.
Console.WriteLine("dynamic 변수 값은 {0}", dValue); // 'dValue' 변수의 값을 콘솔에 출력합니다.
}
}
}
1. object
object
타입은 C#의 모든 데이터 타입의 최상위 베이스 클래스. 즉, C#에서 모든 타입은object
에서 파생된다. 이러한 특성 때문에,object
타입 변수는 어떤 종류의 데이터도 저장할 수 있다.- 사용 예:
object objValue = 1;
- 특징:
- 어떠한 데이터 타입도 저장 가능하다.
- 타입 안전성이 떨어짐. 즉, 사용하기 전에 적절한 타입으로 캐스팅해야 할 필요가 있다.
- 박싱(Boxing)과 언박싱(Unboxing) 과정을 거쳐야 하기 때문에 성능에 부담을 줄 수 있음. 정수와 같은 값 타입을
object
변수에 할당하면, 그 값은 힙에 저장되는 박싱된 객체로 변환됨.
2. var
var
는 암시적 타입 지역 변수를 선언할 때 사용되며, 변수를 선언하는 시점에서 컴파일러가 변수의 타입을 추론하여 결정한다.- 사용 예:
var vValue = "var";
- 특징:
- 변수를 초기화하는 시점에서 타입이 결정됨.
- 코드가 간결해지고, 가독성이 좋아짐.
- 반드시 선언과 동시에 초기화해야 함.
- 메서드 범위에서만 사용할 수 있으며, 클래스의 멤버 변수로는 사용할 수 없음.
- 컴파일 타임에 타입이 결정되므로,
dynamic
보다는 타입 안전성이 높다.
3. dynamic
dynamic
타입은 실행 시간에 타입 체크가 이루어지는 특별한 데이터 타입.- 사용 예:
dynamic dValue = true;
- 특징:
- 실행 시간에 타입이 결정됨.
- 컴파일 시 타입 안전성을 제공하지 않아서, 런타임 에러의 가능성이 높아짐.
- COM 객체나 다이나믹 언어와의 인터페이스에 유용하게 사용된다.
dynamic
을 사용하면, Intellisense와 같은 IDE의 코드 완성 기능이 제한될 수 있다.
형변환
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System; // System 네임스페이스를 사용합니다. 기본적인 시스템 함수를 포함하고 있습니다.
using System.Collections.Generic; // 컬렉션을 다루는 기능을 사용합니다.
using System.Linq; // LINQ 쿼리를 사용하는 기능을 포함합니다.
using System.Text; // 텍스트 처리와 관련된 기능을 사용합니다.
using System.Threading.Tasks; // 멀티스레딩과 관련된 작업을 처리할 때 사용합니다.
namespace RoadBook.CsharpBasic.Chapter02.Examples // 'RoadBook.CsharpBasic.Chapter02.Examples' 네임스페이스를 정의합니다.
{
internal class Ex010 // 'Ex010' 클래스를 정의합니다. 숫자 변환을 다루는 예제를 포함합니다.
{
public void Run() // 'Run' 메서드는 메인 로직을 실행하는 메서드입니다.
{
string strNum = "10"; // 문자열 변수 'strNum'을 선언하고 "10"으로 초기화합니다.
int convertNum = Convert.ToInt32(strNum); // Convert.ToInt32 메서드를 사용하여 문자열 'strNum'을 정수로 변환합니다.
int parseNum = Convert.ToInt32(strNum); // 다시한번 Convert.ToInt32 메서드를 사용하여 문자열 'strNum'을 정수로 변환합니다.
Console.WriteLine("{0} + {1} = {2}", convertNum, parseNum, convertNum+parseNum); // 콘솔에 두 변수의 합을 출력합니다.
}
}
}
에러
Program.cs 라는 파일이 메인 파일이고 여기에 클래스 객체를 생성해줘야 클래스안의 코드가 실행이 되는거임
This post is licensed under CC BY 4.0 by the author.