프로그래밍/C#

    [C#] System.Object

    [C#] System.Object

    1. 핵심 정리 using System; class Car { } class Program { static void Main(string[] args) { Car c = new Car(); c.ToString(); // ?? } } Car 라는 클래스를 만들고 Main에서 객체를 생성했다. 분명 Car 클래스 내부에는 어떠한 멤버도 없지만 Main에서 c. 을 입력하면 사용가능한 함수가 있다. 멤버를 만들지 않았는데 어떻게 사용 가능한걸까? ① 모든 타입은 System.Object 로부터 파생 된다. => 컴파일러가 Object라는 클래스로부터 상속받도록 한다. ② System.Object => 2개의 static method => 3개의 virtual instance method => 1개의 non-v..

    [C#] 타입과 변수의 특징

    [C#] 타입과 변수의 특징

    1. 핵심 정리 using System; class Program { public static void Main() { // int n1; // Console.WriteLine(n1); - error int n1 = 10; Console.WriteLine(n1); // double n2 = 10; // int n3 = n2; double n2 = 10; var n3 = n2; } } ① 초기화 되지 않은 변수는 사용(Read)할 수 없다. ② var (C++의 auto) => 우변의 타입에 따라 좌변의 타입이 결정 => 프로그래밍을 하며 데이터 타입이 바뀔 때 유용 2. 추가 특징 using System; class Program { public static void Main() { 10.ToString..

    [C#] 인터페이스 (interface)

    [C#] 인터페이스 (interface)

    1. 핵심 정리 using System; class Stack { public void Clear() { } } class Queue { public void Clear() { } // public void clear() { } } class Program { static void Main() { } } 위와 같은 코드가 있다고 해보자. Stack 과 Queue 클래스가 있고 그 안에는 Clear라는 동일한 이름의 함수가 있다. 이렇게 된다면 가져다 쓰는 입장에서는 Stack이나 Queue나 Clear를 부르면 되기에 편하게 쓸 수 있다. 하지만 실수로 Queue클래스 내부에 clear로 대소문자를 틀린 함수를 선언했다고 생각해보자. 이렇게 되면 일관성도 없고 가져다 쓰는 입장에서도 혼란이 생길 수 있다..

    [C#] 클래스 기본 문법

    [C#] 클래스 기본 문법

    1. 핵심 정리 using System; class Base { public int data1 = 10; public int data2 = 10; } class Derived : Base { public int data1 = 20; } class Program { static void Main() { Derived d = new Derived(); Console.WriteLine(d.data1); // 20 Console.WriteLine(((Base)d).data1); // 10 } } ① 접근 지정자는 모든 멤버에 개별적으로 표기한다. ② 상속은 : 연산자를 사용한다. ③ 객체 생성 시에는 ()가 있어야 한다. ④ 기반 클래스에 있는 멤버와 동일한 이름의 필드 또는 메소드를 만들 때 => new 를 ..

    [C#] 표준 입력

    [C#] 표준 입력

    1. 표준 입력 사용하기 using System; class Program { public static void Main() { string s = Console.ReadLine(); Console.WriteLine(s); } } ① Console.ReadLine() => 입력 버퍼에서 한 문장을 입력 using System; class Program { public static void Main() { // 10이란 정수 입력 시 "10" 문자열로 들어옴 string s = Console.ReadLine(); int n = Convert.ToInt32(s); Console.WriteLine(n); } } ② 정수 또는 실수로 입력 받으려면 => 문자열로 입력 후 변환 해서 사용 => Convert.To..

    [C#] 표준 출력

    [C#] 표준 출력

    1. 핵심 정리 class Program { static void Main(string[] args) { System.Console.WriteLine("Hello, C#"); } } 매번 출력 때마다 저렇게 적는다면 코드의 길이가 길어질 것이다. using System; class Program { static void Main(string[] args) { Console.WriteLine("Hello, C#"); } } 그리고 정말 출력해야 할 양이 많다면 Console조차 빼버릴 수 있다. using System; using static System.Console; class Program { static void Main(string[] args) { WriteLine("Hello, C#"); } ..