ETC/C#9 객체 지향 / 클래스 / 정적 필드 객체 지향 / 클래스 / 정적 필드 객체 지향 프로그래밍 int a = 30; int b = 40; int : 클래스 a,b : 객체(인스턴스, instance) - int의 인스턴스 Cat kitty = new Cat(); Cat() : 생성자(Constructor) - 클래스의 이름과 같다 new : 연산자 - 생성자를 호출해서 객체를 생성하는데 사용 "모든 클래스는 복합 데이터 형식이다" 복합 데이터 형식은 참조 형식이다. Cat kitty; 여기서 kitty는 null을 가진다. kitty 자체에 메모리가 할당되는 것이 아니라 kitty는 참조로써 객체가 있는 곳을 가르킬 뿐 그래서 new 연산자와 생성자가 필요하다. new 연산자와 생성자를 이용해서 힙에 객체를 생성하고, kitty는 생성자가 .. 2021. 1. 20. 메소드 / 가변길이 매개 변수 / 로컬 함수 메소드 / 가변길이 매개 변수 / 로컬 함수 출력 전용 매개 변수 out : 출력 전용 매개 변수 대개 메소드의 결과는 하나면 충분하다. 그러나 두 개 이상의 결과를 요구하는 특별한 메소드도 있다. ref 키워드를 사용해도 되지만 out 키워드를 사용하면 좀 더 안전한 방법으로 똑같은 일을 할 수 있다. // out : 출력 전용 매개 변수 static void Divide(int a, int b, out int quotient, out int remainder) { quotient = a / b; remainder = a % b; } static void Main(string[] args) { int a = 20; int b = 3; // int c; int d; 출력 전용 매개 변수는 메소드를 호출하.. 2021. 1. 20. 매개 변수 / 참조 지역 변수 매개 변수 / 참조 지역 변수 참조에 의한 매개 변수 전달 값에 의한 전달이 매개 변수가 변수나 상수로부터 값을 복사하는 것과는 달리, 참조에 의한 전달은 매개 변수가 메소드에 넘겨진 원본 변수를 직접 참조한다. 따라서 메소드 안에서 매개 변수를 수정하면 이 매개 변수가 참조하고 있는 원본 변수에 수정이 이뤄진다. class Program { static void Swap(ref int a, ref int b) { int temp = b; b = a; a = temp; } static void Main(string[] args) { // 참조에 의한 매개변수 전달 (Pass By Reference) int x = 3; int y = 4; Swap(ref x, ref y); Console.WriteLine.. 2021. 1. 18. 데이터를 가공하는 연산자 데이터를 가공하는 연산자 널 조건부 연산자 - ?. ?. 가 하는 일은 객체의 멤버에 접근하기 전에 해당 객체가 null인지를 검사하여 그 결과가 참(즉, 객체가 null)이면 그 결과로 null을 반환하고, 그렇지 않으면 '.' 뒤에 지정된 멤버를 반환 ArrayList a = null; a?.Add("야구");// a?.이 null을 반환하므로 Add() 메소드는 호출되지 않음 a?.Add("축구"); Console.WriteLine($"Count : {a?.Count}");// 아무 결과도 안나옴(null 상태) a = new ArrayList();// a는 더 이상 null이 아님 a?.Add("야구"); a?.Add("축구"); Console.WriteLine($"Count : {a?.Count.. 2021. 1. 11. C# 문자열 다루기 C# 문자열 다루기 문자열 안에서 찾기 string 형식이 제공하는 탐색 메소드 IndexOf() 찾고자 하는 지정된 문자 또는 문자열의 위치를 찾음 LastIndexOf() " 뒤에서 부터 찾음 StartsWith() 지정된 문자열로 시작하는지 평가 EndsWith() " 끝나는지를 평가 Contains() 지정된 문자열을 포함하는지를 평가 Replace() 지정된 문자열이 다른 지정된 문자열로 모두 바뀐 새 문자열을 반환 using static System.Console; string greeting = "Good Morning"; WriteLine(greeting); WriteLine(); // IndexOf() WriteLine("IndexOf 'Good' : {0}", greeting.Index.. 2021. 1. 10. C# 데이터 보관하기 (3) C# 데이터 보관하기 (3) Nullable 형식 int 형식의 변수 선언은 4바이트의 메모리가 할당된다. 이처럼 C# 컴파일러는 이 메모리 공간에 반드시 어떤 값이든 넣도록 강제한다. 하지만 프로그래밍을 하다 보면 어떤 값도 가지지 않는 변수가 필요할 때가 가끔 있다. 0이 아닌 비어 있는 변수, 즉 null 상태인 변수 nullable 형식을 사용할 수 있는 경우는 '값 형식'에 한해서이다. 참조형식은 사용 불가능! Nullable 형식은 두 가지 속성 HasValue & Value 1) HasValue : 해당 변수가 값을 갖고 있는지 파악 2) Value : 변수에 담겨 있는 값을 나타냄 int? a = null; Console.WriteLine(a.HasValue);// False Console.. 2021. 1. 10. 이전 1 2 다음