midas+son의 크리에이티브(creative) 이야기

//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

공부/C#2016. 5. 8. 22:26

//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


        /// <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

함수 주석 ///

공부/C#2016. 5. 8. 21:35

//함수 위에서 /를 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 접근

    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

상속 정의

공부/C#2016. 5. 6. 13:32

    //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


        //아래는 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

공부/C#2016. 5. 4. 15:36

//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

//클래스 추가

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