C#

C#/기본기

[C#] 정적(static) 필드와 메소드

정적(static) 필드 static :사전적으로 정적이라는 뜻을 가지고 있음. -움직이지 않는다 C#에서의 static : 메소드나 필드가 클래스의 인스턴스가 아닌 클래스(의 멤버) 자체에 소속되도록 지정하는 한정자 그 틀을 이용한 인스턴스가 여러개 존재할 수는 있으나 클래스는 프로그램에 유일하게 존재. 그리고 어떤 필드가 클래스에 소속된다는 것은 곧 그 필드가 프로그램 전체에서 유일하게 존재한다는 것을 의미 static으로 한정하지 않은 필드: 자동으로 인스턴스에 소속됨 static으로 한정한 필드: 클래스에 소속됨 왜 static필드를 쓸까? 아까도 말했듯이 static으로 수식한 필드는 프로그램 전체에 걸쳐 하나밖에 존재하지 않음 => 프로그램 전체에 걸쳐 공유해야 하는 변수가 있다면 정적 필드를..

C#/기본기

[C#]클래스와 생성자

클래스 이 세상에서 객체라고 할만한 모든 것이 갖고 있는 두가지 : 속성과 기능 C#의 객체 : 속성 -> 데이터, 기능 ->메소드 필드 : 클래스 안에 선언된 변수들 멤버: 필드와 메소드를 비롯하여 프로퍼티, 이벤트 등 클래스 내에 선언된 요소들 Cat kitty = new Cat(); Cat()은 생성자라고 하는 특별한 메소드. 클래스의 이름과 동일한 이름을 가지며 객체를 생성하는 역할 new 키워드는 생성자를 호출해서 객체를 생성하는 데 사용하는 연산자 생성자와 new키워드는 바늘과 실 같은 존재 kitty는 참조. kitty자체에 메모리가 할당되는 것이 아니고 생성자가 힙에 생성한 객체를 가리키는 주소다 모든 클래스는 복합 데이터 형식(기본데이터들이 모여서) 그리고 복합 데이터 형식은 참조형식이다..

C#/기본기

[C#]메소드 오버로딩과 가변개수의 인수(Params) & 명명된 인수

메소드 오버로딩 하나의 메소드 이름에 여러 개의 구현을 올리는 것 (과적하다 = Overloading) 코드를 일관성 있게 유지가능 높은 생산성 매개변수의 개수와 형식이 다른 경우에 사용 int Plus(int a, int b) { return a + b; } double Plus(double a, double b) { return a + b; } . . . int result1= Plus(1, 2); //int Plus(int,int)호출 double result2 = Plus(3.1, 2.4) // double Plus(double,double)호출 가변 개수의 인수(Params + 배열) 매개변수의 개수가 다를 때 사용 매개변수의 개수가 유한하게 정해져 있다면 가변 개수의 인수보단 메소드 오버로딩을..

C#/기본기

[C#] 출력 전용 매개변수(out키워드)

원래 메소드는 return으로 결과를 하나로만 반환한다 여러개 반환하고 싶다면? 출력전용매개변수 out 사용 출력 전용 매개변수 out 매개변수를 목록화 할 수 있어 복수개 반환 가능 out대신 ref키워드를 똑같은 위치에 똑같이 써줘서 구현할 수 있지만, out을 사용하면 안전한 방법으로 같은 일을 할 수 있음 안전한 방법으로라는 말은 ref를 사용할 시 해당 매개변수에 결과를 저장하지 않아도 컴파일러가 경고를 하지않지만, out은 에러메세지 출력 사용방법 메소드 선언시 접근한정자 반환형식 메소드이름(매개변수1, 매개변수2, ....매개변수n, out int 출력전용매개변수이름, out int 출력전용매개변수2이름....) 메소드 호출 시 메소드이름( 인자1, 인자2, out int 변수1이름, out..

C#/기본기

[C#] Pass by Value와 Pass by Reference

Pass by Value using System; using static System.Console; namespace thistiscsharp { class Calculator { public static int Plus (int a, int b) { Console.WriteLine("Input : {0}, {1}", a, b); int result = a + b; return result; } } class MainApp { public static void Main(string[] args) { int x=3; int y=4; int result = Calculator.Plus(x, y); } } } 서론 호출하는 입장인 MainApp클래스의 x, y = 인수 (Arguments)이고 호출되는 메소..

C#/기본기

[C#] 조건문/반복문(if, switch, switch식, do while, foreach)

if문 if 문에서 사용하는 조건식은 bool형식 if -> else if -> else if-> .... ... ... -> else if 문 안에 return; : 현재 메소드를 종결하는 점프문으로서의 기능 if 문 안에 retrun : 값 반환 switch문 switch (조건식) { case 상수 1: -> 조건식 == 상수1일 case (==이 생략됐다고 보자) //실행할 코드 break; -> break : 조건식과 일치할 경우 switch문 바깥으로 이동 case 상수 2: //실행할 코드 break; case 상수 N: //실행할 코드 break; defalut: -> 조건식이 어떤 경우와도 맞지 않은 경우 //실행할 코드 -> 생략가능 break; switch문에 사용되는 조건식 : 정수..

C#/기본기

[C#] null 조건부 연산자(?.)와 null병합 연산자(??)

null조건부 연산자 • C# 6.0부터 도입 • 객체의 멤버에 접근하기 전에 해당 객체가 null인지 검사하여 그 결과가 참이면 null을 반환하고, 그렇지 않은 경우에는 뒤에 지정된 멤버를 반환 • ?. 와 ?[] ArrayList a = null; a?.Add("야구"); //a가 null을 반환하므로 Add()는 호출되지 않음- ?. WriteLine($"{a?[0]}"); //a?.가 null을 반환하므로 아무것도 호출되지 않음 //만약 null이 아니라면, 뒤에 지정된 멤버 Add("야구")가 호출됨 //여기서 그냥 a[0]을 하면 a가 null이기 때문에 애초에 컴파일 에러 //a?[0]를 해줘야 함 - ?[] null 병합 연산자 • null 조건부 연산자(?.)처럼 프로그램에서 종종 필요..

C#/기본기

[C#] 데이터 형변환(캐스팅)

문자열 → 숫자열 1. Convert.ToInt32() string a = "123"; int b = Convert.ToInt32(a); 2. Parse() Parse는 문자열을 숫자로의 변환이 실패하면 예외(exception)을 던짐 예외가 던져지면 프로그램은 현재 코드의 실행을 멈추고 흐름을 다른 곳으로 이동 string a = "123"; int b = int.Parse(a); 3. TryParse() 애초에 변환의 성공 여부를 반환해서 코드 흐름 유지 가능 변환한 데이터는 두번째 매개변수에 저장(out키워드로 수식되어 있다) string a = "123"; int.TryParse(a, out int b) 이전에 b 를 선언하지 않더라도 출력전용 매개변수(out으로 수식한) int b에 변환한 데이..

파워지훈
'C#' 태그의 글 목록 (3 Page)