Console 커서 포지션(CursorPosition)
//Console 커서 포지션 체인지
/*
//c++
COORD pos = { x, y }; //좌표(COORD 는 short 2개를 받는 변수형)
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos); // WIN32API 함수
*/
//c#
int left = 14; //x좌표
int top = 5; //y좌표
Console.SetCursorPosition(left , top ); //left 부터 커서의 열, top 부터 커서의 행
'공부 > C#' 카테고리의 다른 글
Console Title명, 창 크기 (0) | 2016.05.08 |
---|---|
Console 입력 버퍼 검사 (0) | 2016.05.08 |
class - is , as (0) | 2016.05.08 |
델리게이트(delegate) - 대리자 (0) | 2016.05.08 |
함수 주석 /// (0) | 2016.05.08 |
class - is , as
//is - 선언된 변수의 class비교 (true, false)
//as - 선언된 변수의 class비교 하여 입력 (대입이 되거나 null )
MyClass mc = new MyClass();
if(mc is MyClass)
{
Console.WriteLine("mc는 MyClass 입니다.");
}
else
{
Console.WriteLine("mc는 MyClass가 아닙니다.");
}
//==========================//
MyClass2 mc22 = new MyClass2();
//mc22가 MyClass2이면 mc33에 들어가고
//아니하면 mc33에 null이 들어간다.
MyClass1 mc33 = mc22 as MyClass2; //MyClass2는 MyClass1을 상속 - 부모나 본인 Class 변수가 아니면 에러
if (mc33 != null)
{
Console.WriteLine("mc33는 MyClass2 입니다.");
}
else
{
Console.WriteLine("mc33는 MyClass2가 아닙니다.");
}
'공부 > C#' 카테고리의 다른 글
Console 입력 버퍼 검사 (0) | 2016.05.08 |
---|---|
Console 커서 포지션(CursorPosition) (0) | 2016.05.08 |
델리게이트(delegate) - 대리자 (0) | 2016.05.08 |
함수 주석 /// (0) | 2016.05.08 |
상속 가상 함수 선언 (0) | 2016.05.08 |
델리게이트(delegate) - 대리자
/// <summary>
/// 델리게이트(대리자) 선언
/// </summary>
delegate void Work();
delegate void Work11(int num);
static void Work_01()
{
Console.WriteLine("주문 받겠습니다.");
}
static void Work_02()
{
Console.WriteLine("계산 하겠습니다.");
}
static void Work_03()
{
Console.WriteLine("기다려주세요.");
}
static void Work_04()
{
Console.WriteLine("벨이 울림.");
}
static void Work_05(int i)
{
Console.WriteLine("테스트 용. {0}", i);
}
//메인 함수
static void Main(string[] args)
{
//델리게이트 사용
Work myWork = new Work(Work_01); //0
myWork += new Work(Work_02);//1
myWork += new Work(Work_03);//2
myWork += new Work(Work_04);//3
myWork += new Work(Work_02); //4
myWork();
myWork -= new Work(Work_02); //뒤에꺼부터 없어짐 - 4가 없어짐
myWork();
//myWork += new Work(Work_05); //인수가 달라서 안됨
//인자가 있는 델리게이트 사용. 델리게이트로 동일한 형태의 인자와 리턴이 있어야 함
Work11 myWork11 = new Work11(Work_05);
myWork11(222);
}
'공부 > C#' 카테고리의 다른 글
Console 커서 포지션(CursorPosition) (0) | 2016.05.08 |
---|---|
class - is , as (0) | 2016.05.08 |
함수 주석 /// (0) | 2016.05.08 |
상속 가상 함수 선언 (0) | 2016.05.08 |
상속 protected 접근 (0) | 2016.05.08 |
//함수 위에서 /를 3번 입력하면 아래와 같이 자동으로 주석 공간이 생성된다.
//받는 인자값이 있거나 return값이 있으면 각각 xml형태로 주석 공간이 생성된다.
/// <summary>
/// 테스트 1번
/// </summary>
static void Test1()
{
Console.WriteLine("Hello Function1");
}
/// <summary>
/// 함수 위에 /// (/ 세 번)해주면 인스턴스, 리턴에 따라 xml형식으로 주석 공간이 자동으로 생긴다.
/// </summary>
/// <param name="i">int값을 받아 사용</param>
/// <param name="f">float값을 받아 사용. 이유 쏼라쏼라~</param>
static void Test2(int i, float f)
{
Console.WriteLine("Test2 : {0} {1}", i, f);
}
/// <summary>
/// 숫자를 받아와 1증가 시키는 함수
/// </summary>
/// <param name="num">받아올 수</param>
/// <returns>1증가시키고 반환</returns>
static int Test3(int num)
{
return ++num;
}
'공부 > C#' 카테고리의 다른 글
class - is , as (0) | 2016.05.08 |
---|---|
델리게이트(delegate) - 대리자 (0) | 2016.05.08 |
상속 가상 함수 선언 (0) | 2016.05.08 |
상속 protected 접근 (0) | 2016.05.08 |
상속 정의 (0) | 2016.05.06 |
상속 가상 함수 선언
//상속 가상 함수 선언
class Unit
{
public virtual void Test() // virtual public void Test() 도 가능
{
Console.WriteLine("유닛이다.");
}
}
//virtual 선언시 주의 사항 :
//1. private로 만들 수 없다. 접근 자체가 불가하므로 컴파일이 안됨.
//2. static으로도 만들 수 없다. 객체의 상속 관계에서 적용되는 것인다. 메모리 계속 유지되어있는 static은 재정의 할 수 없다.
class Gunner: Unit
{
public override void Test() // override public void Test() 도 가능
{
Console.WriteLine("거너롤세.");
}
}
//또 이를 상속받은 클래스가 다시 재정의 할 수도 있다.
class Mechanic : Gunner
{
public override void Test() // override public void Test() 도 가능
{
Console.WriteLine("메카닉이야.");
}
}
/*
====================================
만약 재정의 하려는 의도가 아니라
새로운 함수를 추가한 것임을 알리기 위해서는
new를 명시적으로 적어주면 된다.
====================================class Mechanic : Gunner
{
new public void Test() // public new void Test() 도 가능
{
}
}
/*
====================================
*/
'공부 > C#' 카테고리의 다른 글
델리게이트(delegate) - 대리자 (0) | 2016.05.08 |
---|---|
함수 주석 /// (0) | 2016.05.08 |
상속 protected 접근 (0) | 2016.05.08 |
상속 정의 (0) | 2016.05.06 |
class 변수 선언 - get, set (0) | 2016.05.06 |
상속 protected 접근
//상속 protected 접근
class Base
{
public bool publicVar = true;
protected bool protectedVar = true;
public void PublicWrite()
{
Console.WriteLine("PublicWrite : {0}", publicVar);
}
protected void ProtectedWrite()
{
Console.WriteLine("ProtectedWrite : {0}", protectedVar);
}
}
class Derived : Base
{
public void PublicWrite2()
{
Console.WriteLine("PublicWrite : {0}", publicVar);
}
public void ProtectedWrite2()
{
ProtectedWrite(); //부모의 protected함수에 접근
Console.WriteLine("ProtectedWrite : {0}", protectedVar);
}
}
class Program
{
static void Main(string[] args)
{
Base baseObj = new Base();
Derived derived = new Derived();
Console.WriteLine("부모 public 접근 : {0}", baseObj.publicVar);
//Console.WriteLine("부모 protected 접근 : {0}", baseObj.protectedVar); // 에러
Console.WriteLine("자식 public 접근 : {0}", derived.publicVar);
//Console.WriteLine("자식 protected 접근 : {0}", derived.protectedVar); // 에러
baseObj.PublicWrite();
//baseObj.ProtectedWrite(); //에러
derived.PublicWrite(); //자식으로 선언한 변수로 부모 함수(public) 접근
//derived.ProtectedWrite(); //에러
derived.PublicWrite2();
derived.ProtectedWrite2();
}
}
//================================================================
//protected변수, 함수는 자식만 직접 접근이 가능함을 기억하자. (c/c++/java 공통적인 기본 사항이다.)
//다른 class에서 사용하고자 한다면 자식에 public으로 접근 가능하게 우회하여야 한다.
//================================================================
'공부 > C#' 카테고리의 다른 글
함수 주석 /// (0) | 2016.05.08 |
---|---|
상속 가상 함수 선언 (0) | 2016.05.08 |
상속 정의 (0) | 2016.05.06 |
class 변수 선언 - get, set (0) | 2016.05.06 |
Console Color (0) | 2016.05.04 |
//class MyClass2 : public MyClass1 //c++ 상속
class MyClass2 : MyClass1 //무조건 public 상속만 가능하며 하나만 가능하다.
{
}
//제가 하는 포스팅은 보통 c++과 c# 차이에 대한 것만 적지 개념을 따로 정리하지 않습니다.
'공부 > C#' 카테고리의 다른 글
상속 가상 함수 선언 (0) | 2016.05.08 |
---|---|
상속 protected 접근 (0) | 2016.05.08 |
class 변수 선언 - get, set (0) | 2016.05.06 |
Console Color (0) | 2016.05.04 |
시간 측정 Stopwatch (0) | 2016.05.04 |
class 변수 선언 - get, set
//아래는 c++의 사용 방법
// int x = 0; //안붙이면 private:
//public:
// int i = 1;
// int j = 2;
//C#에서는 각각 붙여줘야 함
public int i = 1;
protected int j = 2;
int k = 3; // 안붙이면 private
private int l = 4;
/*
//c++에서는 아래와 같이 별도로 Get함수와 Set함수를 만들었었다.
public int GetK()
{
return k;
}
public void SetK(int num)
{
k = num;
}
*/
public int L //변수가 소문자면 get/set을 위한 함수는 보통 같은 글자의 대문자로 사용한다.
{
//겟셋
get { return this.l; }
set //값을 넣을 때 별도의 처리가 가능하다
{
if(value < 0)
{
this.l = 0;
}
else if(value > 100)
{
this.l = 100;
}
else
{
this.l = value; //value는 별도로 지정하는 것이 아니라 값을 자동으로 받아온다.
}
}
/*
//set이 없으면 읽기 전용
get { return this.l; }
// set { this.l = value; }
*/
}
'공부 > C#' 카테고리의 다른 글
상속 protected 접근 (0) | 2016.05.08 |
---|---|
상속 정의 (0) | 2016.05.06 |
Console Color (0) | 2016.05.04 |
시간 측정 Stopwatch (0) | 2016.05.04 |
반복문 (0) | 2016.05.04 |
Console Color
//Console Color
//글자색 컨트롤
Console.ForegroundColor = ConsoleColor.Green;
//Console.ForegroundColor = (ConsoleColor)10
//글자 배경 컨트롤
Console.BackgroundColor = ConsoleColor.Red;
Console.WriteLine("선택하신 무기가 장착 되었습니다.");
Console.ResetColor(); //기본 색상으로 돌아감(글자색 , 배경색 포함)
/*
//c++ 에서는
//SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);
//위의 함수를 사용.
//color는 2바이트 숫자를 가져옴. (WORD = unsigned short)
//16진수로 0x00~0xFF까지. 앞수가 배경, 뒷수가 글자색
*/
'공부 > C#' 카테고리의 다른 글
상속 정의 (0) | 2016.05.06 |
---|---|
class 변수 선언 - get, set (0) | 2016.05.06 |
시간 측정 Stopwatch (0) | 2016.05.04 |
반복문 (0) | 2016.05.04 |
비트 연산 (0) | 2016.05.04 |
시간 측정 Stopwatch
//클래스 추가
using System.Diagnostics;
//아래는 코드 추가 부분
//시간 측정
Stopwatch sw = new Stopwatch(); //생성
sw.Start(); //시작
sw.Stop(); //중지
long time = sw.ElapsedMilliseconds; //밀리언초 반환
sw.Reset(); //시간리셋
sw.Restart(); //재시작
'공부 > C#' 카테고리의 다른 글
class 변수 선언 - get, set (0) | 2016.05.06 |
---|---|
Console Color (0) | 2016.05.04 |
반복문 (0) | 2016.05.04 |
비트 연산 (0) | 2016.05.04 |
switch (0) | 2016.05.04 |