일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- visualstudio2022
- c++class
- 이득우
- uidesign
- 화살표 함수
- 표창던지기
- 비주얼스튜디오
- 게임만들기
- 파이썬
- rendermonkey
- 화살피하기
- swipe
- 가변배열
- 유니티
- python
- 그림자 효과
- 이득우언리얼
- 셰이더
- 배열문제
- Unity
- 언리얼
- IMGUI
- 공부
- C++
- premake5
- c#
- 화살표 메서드
- 렌더몽키
- 다중상속
- 3차원배열
- Today
- Total
신입 개발자 공부 과정
1월1일~1월2일 C# 공부한 부분들 본문
아는 것들
공부해야될것들
-----------------
01.Introduction
02.Hello, World!
03.코드작성시 주의사항
04.Main 메서드
05.변수와 값
06.데이터 타입 int, float, string
07.데이터 타입 bool, char, object
08.주석
09.컴파일과 빌드
10.오류와 디버깅
11.var키워드
-obj와 var의 차이?
12.상수 const - 변하지 않는 값
13.열거형식 enum
14.형식 변환
15.문자열 보간
16.값형식, 참조형식
-stack: 나중에 넣은 데이터를 가장 먼저 꺼내는 구조
ex) int, float, char, bool, enum. //스택에 값이 직접 저장되는 형식: 값형식
-hip: 임의적 순서로 저장
ex) string, object. //힙에 값이 저장되는 형식: 참조형식
//참조형식의 값의 주소는 스택에 저장된다(?)
null: 개체를 참조하지 않는 null 참조를 나타내는 리터럴 = 아무것도 참조하지 않는 값
즉, 참조 형식 변수의 기본값
리터럴: 소스 코드의 고정된 값(?)
17.박싱, 언박싱
boxing= 값 형식을 object형식으로 변환하는 과정 object o = (값 형식) n
object형식이란?
C#에서 사용하는 모든 데이터를 저장하고 모든 데이터 형식을 담을 수 있다.
박싱은 값은 내부에 래핑하고 힙에 저장된다.
값 형식을 박싱하면 힙에 저장 된다.
boxing은 암시적 ex)object obj = i;
unboxing은 명시적ex)object obj = (obj)i;
unboxing을 cast 또는 casting 으로도 표현합니다.
언박싱이 4배 더 오래 걸릴 수 있다.
int i =123;
object obj = i //암시적 박싱
object obj =(object)i;//명식적 박싱
//언박싱(언박싱은 명시적이어야한다)
int j = (int)obj;
Console.WriteLine(i);
Console.WriteLine(obj);
Console.WriteLine(j);
//output will be
//123
//123
//123
18.입력받기
buffer(버퍼)=
데이터를 A에서 B로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리 영역
stream(스트림)=
데이터가 순서대로 전송되도록 보장해주는 데이터의 흐름
Console.ReadLine()=
입력이 종료 되면 문자열 값을 보내 줍니다.
Console.ReadKey()=
문자하나 입력 받고 종료
Console.Read()=
문자열을 입력 받고 입력을 종료 하려면 Enter
문자열을 입력하면 첫번째 문자를 정수 형식 값으로 보내 준다.
글씨로 출력하고싶으면
ConsoleKeyInfo keyInfo = Console.ReadKey();
Console.WriteLine(keyInfo.KeyChar);
열거형식 ConsoleKey 값으로 출력하고 싶다면
ConsoleKeyInfo keyInfo = Console.ReadKey();
Console.WriteLine(keyInfo.Key);
.Net 이란?
닷넷 프레임워크(.NET Framework)는 마이크로소프트사에서 제공하는 윈도우 프로그램 개발 및 실행환경
NET의 특징은 CLS(닷넷 프레임워크의 언어가 반드시 지켜야하는 언어 스펙)을 따르는 언어라면 어떠한 언어라도 닷넷 프레임워크에서 실행가능
CLR이라는 가상기계 위에서 작동하기 때문에 플랫폼에 독립적이며 궁극적으로 프로그래머가 코딩(특히 윈도우 프로그램)을 하는데 더 편한 환경을 제공해줍니다. [출처= 코딩 팩토리]
19.산술연산자
20.비교연산자
21.논리연산자
&& and
|| or
! not
22.선택문 if문
if
if-else
else if
23.선택문 switch문
switch(char, 문자열, 부울, 정수 및 숫자형식 or 열거형)
case(only 상수식=변하지 않는 값)
switch("hong")//표현식
{
case "hong":
Console.WriteLine("hong");
break; //switch문 나가기
default:
Console.WriteLine("Who are you?");
break;
}
enum을 사용하면
enum Season
{
None,
Spring,
Summer,
Autumn,
Winter
}
------
Season favorite = Season.Summer; //favorite에 Season.Summer를 announce하면
switch(favorite)
{
case Seasons.Spring:
Console.WriteLine("봄이여");
break;
case Seasons.Summer:
Console.WriteLine("여름이여");
break;
case Seasons.Autumn:
Console.WriteLine("가을이여");
break;
case Seasons.Winter:
Console.WriteLine("겨울이여");
break;
deafault
Console.WriteLine("뭐시여?");
break;
}
24.반복문 for문
for문
25.반복문 while문
26.break문, continue문
break문= 가장 가까운 바깥쪽 루프 or switch문을 종료
continue문=루프 끝까지 실행하지 않는다
27.메서드 정의및 호출
메서드는 일련의 문(?)을 포함하는 코드 블록이다
특정 작업을 수행하기 위한 일련의 명령문이 포함되고
클래스 내부에서 선언 및 정의되어야 한다.
문법(syntax)
접근자 반환타입 메서드이름()
{
}
메서드 정의=
1.어떤 기능을 실행 할지 생각
2.동사로 시작하는 첫문자 대문자로 짓기
public void SayHello() //반환할 값이 없으므로 반환타입을 void로 해준다
{
//명령문
}
28.메서드 매개변수
매개변수=
외부로부터 들어오는 값을 저장하는 변수
메서드 내부에서는 = 매개변수
외부에서는 = 인자 or 인수 라고 부른다
29.메서드 반환타입, return
값을 반환하는 매서드는
반환 값을 변수에 할당 할 수 있다.
ex)
float GetPi();
{
return 3.14f;
}
float pi = GetPI();
30.클래스, new 연산자
클래스는 사용자 정의 형식
객체(값=인스턴스/object)를 생성하기 위해 변수와 메서드를 정의하는 틀
객체=메모리에 저장된 값, 고유한 속성을 가지며 클래스에서 정의한 기능을 수행할 수 있다
클래스 정의=
class Car
{
}
자동차 이름 정하기//클래스 속성
class Car
{
string name;
}
자동차의 기능 정의//매서드
-정면으로 이동 한다
class Car
{
string name;
void MoveForward()
{
}
}
자동차 객체 만드려면 new 키워드 사용하기
그리고자동차 객체 이름 설정하기
class Car
{
private string name; //속성, 필드, 멤버 변수
private void MoveForward()
{
Console.WriteLine("{0}이 전진 합니다.", name);
}
}
//-----------------
Car car = new Car(); //자동차 객체 생성
car.name = "싼타페" //자동차 객체 이름 성정
Console.WriteLine(car.name); // 자동차 객체 이름 출력
자동차 객체 움직이기//점 연산자를 사용해서 속성 또는 매서드 호출
car.MoveForward();
클래스를 파일로 생성하기=
Ctrl+Shift+A
31.생성자 메서드
특수한 메서드로 해당 클래스의 이름과 동일하다
반환형식은 포함되지 않는다
매개변수가 있는 생성자 메서드 정의=
class Car
{
string name;//맴버 변수
void Car(string carName)//매개 변수를 입력
{
}
}
매개변수 있는 생성자 객체 생성하기=
Car car = new Car("싼타페");//싼타페라는 매개 변수 값을 가진 변수타입 Car의 변수 car의 객체가 생성
//--------------------------
class Car
{
string name;//맴버 변수
void Car(string carName)//매개 변수를 입력,
{
name = carName;//객체를 생성할 때 받은 매개 변수의 값을 맴버 변수 name에 옮겨 담는다
//이유는 생성자 호출이 끝나면 매개변수의 값은 사라지기 때문
}
}
32.맴버, 지역변수
맴버 변수는 인스턴스(객체)가 메모리에 있는 동안 접근 가능
class Car
{
string name; // 맴버변수
}
지역 변수는 메서드에 정의된 변수
메서드가 실행되는 동안 접근 가능
인스턴스에 대한 참조가 없으면
가비지 컬렉션에 의해 자동으로 제거된다
가비지 컬렉션= 메모리를 자동으로 관리해주는 메커니즘
class Car
{
string name; // 맴버변수
void Move(int moveSpeed)//지역변수(매개변수) moveSpeed
{
float limitSpeed = 5f;//limitSpeed 지역변수
}
}
33.점 연산자와 NullReferenceException
NullReferenceException= 아무것도 참조하고 있지 않는 참조 변수에서 맴버에 액세스 하려고 할때 생김
Exception= 오류
34.this 키워드
클래스의 현재 인스턴스를 가리키는 키워드
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Practice
{
class Program
{
static void Main(string[] args)
{
Character hong = new Character("hong", 3, 10);//객체 홍 생성
Character lim = new Character("lim", 2, 12);//객체 임 생성
//현재 상태표 표시
Console.WriteLine("name:{0}, damage:{1}, hp:{2}/{3}", hong.name, hong.damage, hong.hp, hong.maxHp);
Console.WriteLine("name:{0}, damage:{1}, hp:{2}/{3}", lim.name, lim.damage, lim.hp, lim.maxHp);
//공격신호
hong.Attack(lim);
lim.Attack(hong);
//현재 상태표 표시
Console.WriteLine("name:{0}, damage:{1}, hp:{2}/{3}", hong.name, hong.damage, hong.hp, hong.maxHp);
Console.WriteLine("name:{0}, damage:{1}, hp:{2}/{3}", lim.name, lim.damage, lim.hp, lim.maxHp);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Practice
{
class Character
{
public string name;
public int damage;
public int hp;
public int maxHp;
public Character(string name, int damage, int maxHp)
{
this.name = name; // 맴버변수 string name을 지정
this.damage = damage;
this.maxHp = maxHp;
this.hp = this.maxHp;
}
public void Attack(Character target)
{
Console.WriteLine("{0}이(가) {1}을(를) 공격합니다", this.name, target.name);
target.Hit(this.damage);
}
public void Hit(int damage)
{
Console.WriteLine("{0}이(가) {1}에게 공격받았습니다", this.name, damage);
this.hp -= damage;
}
}
}
output:
35.static 한정자
특정 개체가 아니라 형식 자체에 속하는 정적 맴버를 정의 할 수 있다정적 맴버는 프로그램이 실행되는 동안 수명이 유지되며 항상 클래스 이름으로 엑세스(접근)된다생성된 인스턴스의 수와 상관 없이 정적 맴버는 항상 한개만 있다정적 메서드는 비정적 필드 및 메서드에 엑세스 할 수 없다
class Program
{
int a;
static void Main(string[] args)
{
(x)a = 10; //정적 메서드는 비정적 필드에 있는 int a에 접근 불가
(x)Test(); //정적 메서드는 비정적 메서드 Test()에 접근 불가
}
void Test()
{
}
}
class Program
{
static int a;
static void Main(string[] args)
{
Program.a = 10;
Program.Test();
}
static void Test()
{
}
}
정적변수의 정의=
앞에 static을 붙혀준다
class CallCenter
{
static string number = "1588-0000";
}
정적 맴버에 접근=
클래스 이름으로 접근 해야한다
class Program
{
static void Main(string[] args)
{
Console.WriteLine(CallCenter.number);//
Callcenter.Call();
}
}
정적 생성자=
사용하는곳: 정적 필드를 초기화 하거나 특정 작업을 한번만 수행 해야 하는 데 사용
생성자를 만들 때 엑세스 한정자(ex)public, private...을 사용할 수 없다
생성자에 매개변수를 정의 할 수 없다
인스턴스 생성자보다 먼저 호출되며 한번만 실행 된다
Class CallCenter
{
public static string number;
//생성자
static CallCenter()
{
CallCenter.number = "1588-0000";
}
}
36.메서드 오버로딩
37-1.상속, protected
37-2. virtual, override, base
37-3. 생성자 연결
38.업캐스팅 다운캐스팅
39.구조체
40.추상클래스
41.인터페이스
42.속성과 개체이니셜라이져
43.1차원 배열
44.다차원 배열과 가변배열
45.반복문 - foreach
46.namespace과 using지시문
47.ArrayList
48.Stack
49.Queue
50.Hashtable
51.인덱서
52.일반화 프로그래밍
53.List
54.Dictionaray
55.HashSet
56.LinkedList
57.예외처리
58.대리자
59.멀티캐스트 대리자
60.이벤트
61.Action
62.Func
63.Predicate
64.Comparison
65.무명메서드
66.람다식
67.반복기와 yield
68.LINQ
69.파일 읽기
70.파일 쓰기
71.스레드
72.비동기 프로그래밍
'C# > 모르는 내용들 공부' 카테고리의 다른 글
c# 화살표 함수 => (0) | 2022.01.13 |
---|---|
c# 재귀함수 (0) | 2022.01.13 |
C# Callback ,Json 공부 (0) | 2022.01.05 |
1월3~4일 추가로 공부한 것 (0) | 2022.01.04 |
12/28 모르는 부분들 C# 구조체Struct, 배열Array (0) | 2021.12.29 |