본문 바로가기
CSharp/CSharp 문법

C# 강의 메모

by MonoSoft 2022. 9. 28.
728x90
반응형

C# 강의 메모

******************** 1강 

-구글에 C# 설치 검색 후 설치

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace ConsoleApp1

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine("Hello C#");

Console.WriteLine(args.Length); //args 인자 개수

Console.WriteLine("Hello" + args[0]);

Console.ReadKey();

}

}

}

- CMD 창에서 실행파일명 띄고 인자넣어줌

-using 키워드를 써서 각종 보따리안에 보따리안에 가져다 쓰겠다.

-namespace 는 보따리명을 만들겠다!

-namespace 보따리속에 class program 이라는 툴 이라는걸 실행시켰다.

-class program 속에 여러 기능이 있다...

있는데 Main이라는 유일한 함수고 가장먼저 실행되는 함수

-consol이라는 도화지에 write 적어라 "hello C#' 을

(Console.Write("Hello C#");

-Console.Readkey(); << 누군가 키를 쓸때까지 기달려라. 

-Main << 운영체제에 의해 유일하게 호출하는것! 그 외 운영체제가 호출하는건 없다!

- static void Main(String[] args)

:main : 김밥기계

:(String[] args) :김밥 재료 

 

******************** 2강 

-폼.cs 하단에는 디자인창과 소스창이 있따.

-Program.cs << 메인 펑션

-properties 파레트 상단 설명

1.원래 순서로 정렬

2.알파벳순서로 정렬

3.프로퍼티로 바뀜

4.이벤트로 바뀜

 

-변수선언

: int 변수명 = 10; --인트형 변수를 10을 넣는다.

: string 변수명 = "+"; --스트링형 변수를 선언 후 + 대입

: bool 변수명 = false; --부울형 변수를 선언 후 펄스 대입;

: = << 대입 연산자 

-사칙연산 (+,-,*,/)

-변수명.toString(); --스트링 형식으로 형변환한다.

 

******************** 3강

-System.Convert.ToInt32( ) : 스트링형 -> 인트형 형변환

=>int 변수명 = Convert.ToInt32(스트링변수);

-함수=펑션=메소드 같은의미 

-함수의 프로토타입형

int Add(int 변수명, int 변수명1)

{

int 임시변수 = 변수명 + 변수명1;

return 임시변수;

 

-public 클래스 추가

public int Add(int 변수명, int 변수명1)

{

int 임시변수 = 변수명 + 변수명1;

return 임시변수;

 

-float형 실수형

public float Add(float 변수명, float 변수명1)

{

float 임시변수 = 변수명 + 변수명1;

return 임시변수;

 

-리턴값이 없는 함수는 void 추가 

: public void 같은변수명(변수);

public void 같은변수명(변수, 변수1); <<<<<오버로딩 

: public int Add(int number1, int number2)

{

int sum = number1 + number2;

return sum;

}

 

public float Add(float number1, float number2)

{

float sum = number1 + number2;

return sum;

 

******************** 4강 

-if 문

: if(조건식)

{

else if (조건식)

{

}

 

-비교 연산자 

: 1 == 1 같냐?

1 != 1 다르냐?

1 > 2 

1 >= 1 

1 <= 1

모두 bool형의 답으로 나옴 

-MessageBox.Show("23423423");

:using 에 선언되어서 사용할수있다.

:.Show 메소드가 있는데 안에 쓰고싶은말쓰면됨.

 

-return;

: 펑션에서 빠져나오고 싶으면 이걸 사용 

단. void가 아닌 다른형일때는 뒤에 써준다.> return 0;

 

-String.IsNullOrWhiteSpace();

:공백 체크하는 함수 

if (String.IsNullOrWhiteSpace(Sum1.Text))

{

MessageBox.Show("Sum1에 숫자를 입력해주세요.");

Sum1.Focus();

return; //void 라서 하위 코딩은 안타고 펑션을 빠져나간다. *인트형은 리턴 return 0; 이나 넣어준다.

 

-int.TryParse 인자가 숫자로 바꿀수있는지 체크하는 함수. 

-함수안에 out은 델파이 out 같은 개념 

-Sum1.SelectAll(); 전체 블럭지정

-Sum1.Focus(); 해당 컨트롤로 포커스 이동 

 

******************** 5강

- 스트링 형태를 인트형으로 변환

: int 변수명 = int.Parse(스트링변수);

- .ToString(); 

:스트형 형태로 변환하며 모두 ToString()를 가지고 있다.

 

******************** 6강 

- object : 모든 데이터 타입을 저장할수있다. 

: private void NumButton1_Click(object sender, EventArgs e)

- sender 형을 numButton 로 형변환해서 받아온다.

: Button numButton = (Button)sender; 

-열거형 데이터 타입 정의함 

: 선언 : public enum 명칭 { a, b, c , d } 

: 적용 : int number1;

Sesson currentSeason = Sesson.Spring;

 

******************** 7강 = 클래스 선언, 생성자, 접근 제한자

-붕어빵 틀 -> 클래스 

만들어진 붕어빵 -> 인스턴스 = 오브젝 

-클래스로 인스턴스를 만드는걸 클래스화 한다. 

-인스턴스화 할려면 new 라는 연산자를 사용 , 메모리 할당 

-클래스 정의

class Cat

{

int 변수명1;

string 변수명2;

//클래스 속에 메소드는 함수와 비슷 , void < 함수의 리턴값

void 메스드명()

{

Consol.Write("멍멍"); 

}

}

-접근제한자 

: public = 다른 클래스에서도 접근이 가능

: private = 클래스 내부에서만 사용가능

- internal class 클래스명 

{

//클래스에 아무 접근제한자가 없으면 internal를 사용 하며

클래스 내부에서만 사용할수있다.

//클래스 앞에 public 달면 밖에 클래스에서도 사용가능 

}

- 클래스 선언 인스턴트 오브젝 생성

: private 클래스명 새로운클래스명 = new 클래스(); <<메모리 할당 

-생성자는 public로 선언 , 리턴타입도 없음

: public 생성자명(string 인자명1, int 인자명2)

{

}

-C#에서는 대.소문자 구분함! 

-this 키워드: 그 클래스의 현재 인스턴스를 가르킨다. 인자를 가르키는거아님!!!! 

 

******************** 8강 = 예제로 배우는 C# 08 - 클래스 활용, 속성, DateTime

-클래스 : 클래스를 new 연산자로 생성하는걸 클래스를 객체와 인스턴스화라고 한다.

-클래스 변수 => 필드 , 클래스 함수를 => 메소드 

-클래스는 속성 or 프로퍼티를 가지고있다.

-pertial 붙으면 클래스 정의를 여러곳에 있는다라는 의미

-internal : 이 안에서만 사용할수있다.

-public : 다른곳에서 사용할수있다.

-DataTime : 날짜를 저장하는 타입

: DateTime date = new DateTime(12개의 인자을 넣을수있음=오버로딩 );

: DateTime 변수명 = DateTime.now;

 

******************** 9강 = 예제로 배우는 C# 09 - 배열, 반복문 (For 문)

-DateTime.parse << 스트링형을 데이터 타임으로 바꿔줌

-배열 선언

: 클래스명[] 명칭 = new 클래스명[5];

=> 엑세스는 명칭[0] = 1; 명칭[0] = 2; 명칭[0] = 3;

또는

:int[] 명칭 = new int[] {1,2,3,4,5};

== int[] 명칭 = {1,2,3,4,5};

-for문

: 반복하라 (index 가 0 부터 4 까지)

{

}

//for (초기식; 조건식; 증강식)

//반복하라(index 가 0부터 4까지)

//{

//}

//초기식

//조건식 -> True -> 코드블럭 -> 증각식

//조건식 -> True -> 코드블럭 -> 증각식

int sum = 0;

//for문 예제 1

for (int index = 1; index <= 10; index = index + 1)

{

sum = sum + index;

}

//for문 예제 2

for (int index =1; index <= 10; index++)

{

sum += index;

}

 

int numberOne = 1;

int numberTwo = 0;

numberTwo = ++numberOne;//대입하기 전 먼저 증가 

numberTwo = numberOne++;//대입 후 먼저 증가

numberTwo = --numberOne;//대입하기 전 먼저 감소

numberTwo = numberOne--;//대입 후 먼저 감소

 

******************** 10강 = ArrayList, List T, foreach 문

-자료구조의 장점 : 검색최적,정렬빠름,순차엑세스 이점, 랜덤 엑세스프로세스에 강함 

-ArrayList 는 using System.Collections 안에 있다.

:선언방식 = ArrayList 명칭 = new ArrayList();

:추가방식 = 명칭.Add();

:엑세스방식 = 명칭[번지];

:중간에 끼워넣기 = 명칭.Insert(2,2);

:중간에 지우기,값을 찾아서 제거 = 명칭.Remove(2);

:인덱스값으로 제거 = 명칭.RemoveAt(1);

:모든 배열은 count라는 속성을 제공한다.

= for (int index = 0; index < 명칭.count; index++)

{

명칭[index];

int 변수명 = (int)arrayList[index]; <<<<<<인트형으로 변환해서 변수에 넣는다 

}

-List<T> : 이 티는 데이터 타입을 말하며 티가 붙어 타입을 정해줌 

데이터 일반화 클래스 제네릭 클래스 

// int numberOne;

// int[] numberArray;

//numberOne = 1;

//numberArray = new int[5];

/*

int numberOne = 1;

int[] numberArray = new int[5];

numberArray[0] = 1;

numberArray[1] = 2;

numberArray[2] = 3;

numberArray[3] = 4;

numberArray[4] = 5;

int[] numberArray2 = new int[] { 1, 2, 3, 4, 5 };

int[] numberArray3 = 

1, 

2, 

3, 

4, 

};

 

Customer customerOne;

Customer[] customerArray = new Customer[5];

customerArray[0] = new Customer("first", "last", new DateTime(2000, 1, 1));

customerArray[1] = new Customer("first", "last", new DateTime(2000, 1, 1));

customerArray[2] = new Customer("first", "last", new DateTime(2000, 1, 1));

customerArray[3] = new Customer("first", "last", new DateTime(2000, 1, 1));

customerArray[4] = new Customer("first", "last", new DateTime(2000, 1, 1));

Customer[] customerArray2 =

{

new Customer("first", "last", new DateTime(2000, 1, 1)),

new Customer("first", "last", new DateTime(2000, 1, 1)),

new Customer("first", "last", new DateTime(2000, 1, 1)),

new Customer("first", "last", new DateTime(2000, 1, 1)),

new Customer("first", "last", new DateTime(2000, 1, 1))

}; 

 

-for문

int sum = 0;

for (int index = 0; index < List.Count; index++)

{

int value = List[index];

sum += value;

-foreach문

foreach ( int value in List)

{

sum += value;

}

*위에 두개는 같은 흐름이다.

 

******************** 11강 = 클래스 상속, 가상 메서드, as/is 연산자
-virtual 붙으면 가상메소드이다.

: public virtual string 클래스명

{

return "";

}

 

-가상매소드를 재정의 할때 오버라이딩을 붙여준다.

: public override string 새로운클래스명()

{

return "";

}

 

-자식 클래스 호출시 그 자식의 부모클래스부터 상속을 들어온다...

: 부모

|

자식

|

호출

>>>>>>자식클래스 호출하면 부모클래스도 자동 호출되며

부모클래스속에 매소드를 사용할시에는

base() 사용해서 명시해준다.

: public 부모클래스명 (인자들) : base(부모클래스매개변수);

: 부모 클래스에서 정의한 함수를

자식 클랙스에서 재정의 할때 override를 명시해준다.

public override string 함수명()

{

return "";

}

 

= 클래스명 is 타입 : 부울 리턴 클래명이 타입이라면 트루

= 치환할때 as 연산자를 사용 

: (pet as cat).함수명;

 

******************** 12강 = 라이브러리를 만들자 01

 

******************** 15강 = 라이브러리를 만들자 04 - 확장 메서드

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using BabyCarrot.Tools;

namespace BabyCarrotTest

{

class Program

{

static void Main(string[] args)

{

LogManager log = new LogManager(null,"_BayCarrotText");

log.WriteConsole("test");

}

}

 

//확장메소드는 항상 static 클래스로 선언하고 

그 안에 static 펑션으로 선언해야된다.

//첫번째 인자는 this키워들를 붙이고 확장할 클래스나 타입이 와야된다. 

두번째부터는 인자있던없던 상관없음 

public static class ExtensionTest

{

public static void WriteConsole(this LogManager log, string data)

{

log.Write(data);

Console.Write(data);

}

}

}

728x90
반응형

'CSharp > CSharp 문법' 카테고리의 다른 글

기초문법 정리2  (0) 2022.09.27
두 문자열 경로로 결합  (0) 2022.09.26
파일 체크 후 생성  (0) 2022.09.20
기초문법 정리  (0) 2022.09.16

댓글