본문 바로가기

IT/C#(CS)10

CS 기초강좌 10. 캐스팅(casting), is, as, 변환 연산자 CS 기초강좌 10. 캐스팅(casting), is, as, 변환 연산자 c# 캐스팅 규칙 int n = 10; float f = 5.5f; f = n; //가능 n = f; //불가, 데이터 손실이 일어나는 경우 불가 데이터의 손실이 날 수 있는 경우, 캐스팅(암시적 형 변환)이 되지 않는다. int n = 10; float f = 5.5f; f = n; //가능 n = (int)f; //가능 명시적 형 변환을 가능 명시적으로 (int) 를 표기시켜 형 변환하는 것은 가능하다.(데이터 손실은 당연히 발생함 is, as 다음 코드를 보자. using System; class Car { } class Tank : Car { public void Fire() { Console.WriteLine("Fire!!.. 2020. 11. 16.
CS 기초강좌 9. 널 조건부 연산자, 널 접합 연산자 Elvis operator "?" "?[" "??" CS 기초강좌 9. 널 조건부 연산자, 널 접합 연산자 Elvis operator "?" "?[" "??" 다음 코드를 봅시다. using System; class Point { public int x = 0; public int y = 0; public override string ToString() { return string.Format($"{base.ToString()} x:{x} y:{y}"); } public void PrintToString() { Console.WriteLine(ToString()); } } class Program { public static Point CreatePoint(int x, int y) { if (x < 0 || y < 0) return null; Point .. 2020. 11. 15.
CS 기초강좌 8. Nullable ?표현 CS 기초강좌 8. Nullable ?표현 아래 코드를 봅시다. using System; class classPoint { public int x = 0; public int y = 0; } public struct structPoint { public int x; public int y; } class Program { static void Main(string[] args) { classPoint cp1 = new classPoint(); classPoint cp2 = null; //a structPoint sp1 = new structPoint(); structPoint sp2 = null; //b } } class와 struct를 하나씩 정의하고 아래에서 각기 생성 시켜 봅니다. 이전에 'CS 기.. 2020. 11. 14.
CS 기초강좌 7. 값 타입과 참조 타입의 비교 연산자 == or Equality CS 기초강좌 7. 값 타입과 참조 타입의 비교 연산자 == or Equality 먼저 참조타입의 비교에 대해서 보자. 먼저 객체를 비교 하는 방법에는 2가지가 있습니다. 연산자 ==, 그리고 System.Object가 제공하는 Equality 메소드입니다. 다음 코드를 보아요. class classPoint { public int x = 0; public int y = 0; } class Program { static void Main(string[] args) { classPoint cp1 = new classPoint(); classPoint cp2 = cp1; classPoint cp3 = new classPoint(); } } cp1, cp2, cp3 세 가지의 변수가 있습니다. cp1, cp3.. 2020. 11. 13.
CS 기초강좌 6. 값 타입과 참조 타입, 스택과 힙, struct와 class CS 기초강좌 6. 값 타입과 참조 타입, 스택과 힙, struct와 class 사용자가 코드를 통하여 객체를 생성할 때, 크게 두 가지 메모리 영역에 생성시킬 수 있다. stack과 heap 영역이다. 관련 설명을 간단히 가져오면 오래와 같다. 스택 매우 빠른 액세스 변수를 명시 적으로 할당 해제 할 필요가 없습니다. 공간은 CPU에 의해 효율적으로 관리되고 메모리는 단편화되지 않습니다. 지역 변수 만 스택 크기 제한 (OS에 따라 다름) 변수의 크기를 조정할 수 없습니다. 힙 변수는 전역 적으로 액세스 할 수 있습니다. 메모리 크기 제한 없음 (상대적으로) 느린 액세스 효율적인 공간 사용을 보장하지 못하면 메모리 블록이 할당된 후 시간이 지남에 따라 메모리가 조각화되어 해제될 수 있습니다. 메모리를 .. 2020. 11. 11.
CS 기초강좌 5. C# System.Object에 대하여 CS 기초강좌 5. C# System.Object에 대하여 아래 코드부터 볼까요? class Point { public int x = 0; public int y = 0; } class Program { static void Main(string[] args) { Point p = new Point(); } } 간단하게 Point 라는 x,y 정보를 가지는 클래스를 만들어 보았습니다. 이 클래스를 생성시키고 x, y에 접근하려 했을 때, 아래와 같이 표시되는데요. Point p = new Point(); p.ToString(); //?? 분명히 새로 만든 클래스인데 내가 생성한 적 없는 메서드가 보입니다. 사용 또 한 되고요. system.Object 이전 5강에서 c#은 모두 객체이라고 말한 적이 있습.. 2020. 10. 19.
CS 기초강좌 4. C# 타입, 변수의 특징 CS 기초강좌 4. C# 타입, 변수의 특징 c#에서 타입과 변수의 특징을 알아보자. 다음 코드를 보자. int n = 0; Console.Write(n); 정상 독작을 하는 코드이다. 만약 n을 초기화하지 않는다면? C++ 등 여러 언어에서 값을 초기화 하지 않을 경우 쓰레기 값, 알기 힘든 값이 표기되는 경우가 많은데, C#의 경우는 명시적으로 오류를 출력한다. var? 라인의 우변의 보고 좌변을 형식을 추론하여 사용한다. 다음 코드를 보자. int n = 0; int n1 = n; n을 float형으로 바꾼다고 가능하면, float n = 0; var n1 = n; c#은 모든 것이 객체이다. 당신이 명시적으로 선언한 값들만이 객체가 아니다. float n = 0; //변수 var n1 = n; /.. 2020. 10. 18.
CS 기초강좌 3. C# interface 인터페이스 CS 기초강좌 3. C# interface 인터페이스 c#에는 인터페이스라는 계념이 있습니다. 일관된 형태의 라이브러리를 만들려고 할 때 관계성이 있는 클래스들이 사용하는 메서드의 이름을 약속하는 문법이다. 클래스는 만드는 사람과, 사용하는 사람이 인터페이스를 알고 있으면 메소드 들의 규칙성이 있음을 미리 알 수 있다. 다음 예를 보자. 자료구조를 구현할 때 using System; class Vector { public void Clear() { } public void Add() { } public void Remove() { } } class Queue { //여기에도? } class Program { static void Main(string[] args) { } } 위와 같이, 자료구조 클래스를.. 2020. 10. 17.
CS 기초강좌 2. C# 클래스 기초 CS 기초강좌 2. C# 클래스 기초 간단한게 상속 구조의 클래스를 만들어 보았습니다. 아래 코드 using System; class Parent { public int data = 0; } class Child : Parent { } class Program { static void Main(string[] args) { Child c = new Child(); } } class Parent는 부모 클래스이고 class Child : Parent 에 부모를 상속시킨 구조입니다. 그리고 Child c = new Child(); 코드로 자식을 생성시켜보았습니다. 필드의 재정의 using System; class Parent { public int data = 0; } class Child : Parent .. 2020. 10. 16.
CS 기초강좌 1. C# 콘솔 프로젝트 세팅, 표준 입출력 CS 기초강좌 C#. 콘솔 프로젝트 세팅, 표준 입출력 콘솔 프로젝트 세팅 visual stdio를 기준으로 설명한다. .NET 데스크톱 개발 이 설치되어 있어야 한다. 새로운 프로젝트 >> Visual C# >> 콘솔 앱 앱의 이름은 본인이 원하는 데로 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp2 { class Program { static void Main(string[] args) { Console.WriteLine("안녕하세요"); //테스트를 위해 한줄 추가 } } } 초기 코드는 이럴 것이다. .. 2020. 10. 14.