| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- cs기술면접
- 스프링부트 장점
- OPC-UA
- spring spring boot 차이점 공통점
- 서버저장방식
- java란?
- C#이론
- UaExpert다운로드
- Redundant Array of Independent
- OPC-UA Download
- 기술면접
- jvm구성요소
- Service Worker
- Blazor WebAssembly
- Prosys Opc-ua 다운로드
- 컴퓨터과학
- CS
- 스프링 스프링부트 차이점 공통점
- C# CS
- 스프링부트 단점
- prosys opc-ua
- 스프링부트의 장단점
- java란 무엇인가
- opc-ua 다운로드
- UaExpert download
- REST API
- nosql
- Blazor Web App
- 프론트엔드
- C# Blazor
- Today
- Total
담비의 개발블로그
[C#]C#기초이론 본문
이직성공 후 교육을 받고 있는 중입니다.
교육받고 있는 내용들을 토대로 정리한 내용입니다.
그냥 내가 보려고 메모장처럼 적어두는 것!
◆ JS와 C#의 차이점
JS는 인터프리터 언어이며 C#은 컴파일러 언어이다.
인터프리터 : 프로그램을 한 줄씩 읽으며 즉시 실행한다.
컴파일러 : 소스 코드를 기계어로 번역하는 컴파일 과정을 거친 후 소스 코드 전체를 한번에 분석하고 최적화를 수행한 후 실행 파일을 생성한다.
인터프리터와 컴파일러의 차이점
실행속도 : 느림 vs 빠름
보안 : 취약 vs 안전
| 종류 | 인터프리터 | 컴파일러 |
| 실행속도 | 느림 | 빠름 |
| 보안 | 취약 | 안전 |
◆ 변수 : 값을 담아 놓을 수 있는 역할
◆ 자료형
> C#의 모든 자료형은 최상위 객체인 System.Object에서 파생된다.
> 값타입과 참조타입으로 나뉜다.
1) 값타입
> 실제 데이터 값을 스택 영역에 직접 저장한다.
① 정수형 : 데이터 크기에 따라 선택한다. (shor, int, long)
② 실수형 : 소수점이 포함된 데이터를 다룬다. (float, double, decimal)
③ 기타 : bool - true 또는 false만 저장/char - 유니코드 문자1개/enum - 열거형/struct - 사용자의 정의 구조체
2) 참조타입
① object : 모든 타입의 조상으로 어떤 타입의 데이터도 담을 수 있다.
② string : 문자열을 다룬다.
③ class : 객체지향 프로그래밍의 기본 단위이다. 무언가를 실행하기 위한 틀로 생각하면 편하다.
④ interface : 클래스가 구현해야 할 기능을 정의한다.
⑤ delegate : 함수를 참조하는 타입이다.
⑥ array : 동일한 타입의 데이터를 연속적으로 저장하는 집합이다.
3) 특수타입
① var타입 : 컴파일러가 대입되는 값을 보고 타입을 자동으로 결정한다.
② Nullable타입 : 기본적으로 값 타입은 null을 가질 수 없지만 데이터베이스 연산 등에서 데이터가 비어있음을 표현하기 위해 사용한다.
③ dynamic : 컴파일 시점이 아닌 런타임에 타입을 결정한다. 파이썬 같은 동적 언어와 통신하거나 리플렉션을 쓸 때 주로 사용하지만, 성능 저하와 런타임 에러 위험이 있어 주의가 필요하다.
◆ 형변환
> 각 자료형은 서로 변환이 가능할 수도 있고, 그렇지 않을 수도 있다.
// string > int 로 변환
string a = "123";
int b = int.Parse(a);
// int > string 로 변환
int c = 123;
string d = c.ToString();
◆ 연산자
1) 산술 연산자
> 숫자 데이터를 계산할 때 사용하며, 가장 기본이 되는 연산자이다.
+ 더하기
- 빼기
* 곱하기
/ 나누기
% 나머지
2) 증감연산자
> 변수의 값을 1씩 증가시키거나 감소시킬 때 사용한다. 위치의 따라 실행 순서가 달라진다.(아래 i는 임의의 값이다.)
++i : 값을 1 증가시킨 후에 문장을 실행한다.
i++ : 문장을 실행한 후에 값을 1증가시킨다.
--i,i-- : 1감소
3) 비교 연산자
> 두 값을 비교하여 결과로 bool값(true 또는 false)을 반환한다.
== : 같다
!= : 다르다
> / < : 크다 / 작다
>= / <= : 크거나 같다 / 작거나 같다
4) 논리 연산자
>여러개의 조건을 조합할 때 사용한다.
&& : 두 조건이 모두 참일 때만 true(AND)
|| : 두 조건 중 하나만 참이어도 true(OR)
! : true를 false로, false를 true로 반전(NOT)
5) 대입연산자
> 변수에 값을 할당할 때 사용하며, 산술 연산과 결합된 복합 대입 연산자도 자주 쓰인다.
= : 값을 대입(오른쪽 값을 왼쪽에 넣음)
+=, -=, *=, /=, %= : 계산 후 바로 대입
6) 비트 연산자
데이터를 비트(0,1) 단위로 조작할 때 사용한다. 하드웨어 제어나 최적화 작업에서 주로 쓰인다.
&(AND), |(OR), ^(XOR), ~(NOT)
<<, >>(Shift) : 비트를 왼쪽이나 오른쪽으로 이동시킨다.
7) C#전용 및 특수 연산자
> C#에는 코드를 간결하게 만들어주는 유용한 특수 연산자들이 많다.
▷ 삼항연산자 : 조건? 참일_때_값 : 거짓일_때_값
int score = 85;
string result = (score >= 60) ? "Pass" : "Fail";
▷ Null 관련 연산자
?? : 왼쪽 값이 null이면 오른쪽 값을 반환한다.
string name = inputName ?? "Guest";
?. : 객체가 null이 아닐 때만 멤버에 접근한다. null이면 에러 대신 null을 반환한다.
int? length = list?.Count;
◆ 조건문(if, switch)
if문
if(조건식)
{
구문
}
◆ 필드(Field)
> 클래스 내부에서 데이터를 저장하는 진짜 변수
> 외부에서 이 변수에 직접 접근해서 값을 바꾸거나 가져올 수 있다.
> 데이터를 담는 그릇
◆ 프로퍼티(Property = 속성)
> 내부적으로는 데이터를 저장하지만, 외부에서는 메서드를 통해 접근하도록 감싸진 형태
> 자동 구현 프로퍼티라고 해서 C#이 내부적으로 숨겨진 필드를 자동으로 만들어준다.
① 데이터검증(유효성검사) : 필드는 아무 값이나 넣는 것을 막을 수 없지만 프로퍼티는 제어가 가능하다.
private int _price;
public int price
{
get { return _price; }
set
{
if (value < 0) // 0보다 작으면 0으로 고정
_price = 0;
else
_price = value;
}
}
② 읽기 전용 / 쓰기 전용 설정 : 필드는 public으로 열어두면 누구나 수정할 수 있지만, 프로퍼티는 수정만 막거나 읽기만 막을 수 있다.
// 외부에서는 읽기만 가능하고, 클래스 내부에서만 수정 가능하게 설정
public string Writer { get; private set; }
③ 데이터 바인딩 (UI 연동) : 나중에 WPF나 WinForms 같은 GUI 프로그램을 만들 때, 화면에 데이터를 뿌려주는 '데이터 바인딩' 기능은 필드가 아닌 프로퍼티에서만 작동하는 경우가 많다.
'언어&프레임워크 > C#' 카테고리의 다른 글
| [C#]OPC-UA 장비 없이 집에서 해보기 03 (1) | 2025.12.16 |
|---|---|
| [C#]OPC-UA 장비 없이 집에서 해보기 02 (0) | 2025.12.10 |
| [C#]OPC-UA 장비 없이 집에서 해보기 01 (1) | 2025.12.09 |
