본문 바로가기

카테고리 없음

SMART FACTORY - 가변인자 공부

반응형

FOR문이 너무 중첩되면 IF 문으로 바꾸는게 코딩을 깔끔하게 할 수 있는 비결인가 ? 

using System;

namespace _20200701_가변인자_우영이가한거
{
    class Program
    {
        public static void VarMethod(params object[] arr)
        { // 오브젝트 타입은 타입의 관계 없이 다 받는다. 예를 들어 : 문자형, 정수, 실수형 등등
            Console.WriteLine($"가변 인자 개수 : {arr.Length}");

            Console.WriteLine("[인자 전체] :");

            foreach (object item in arr)
            {
                Console.Write(item + "");

                Console.WriteLine();

                Type t = item.GetType(); // 타입을 추출한다. 반환타입이 타입

                if (t.Equals(typeof(System.String)))
                {

                    Console.WriteLine("문자열 타입 : ");
                    Console.WriteLine(item + " ");
                }
                else if (t.Equals(typeof(System.Int32)))

                {
                    Console.WriteLine("정수 타입 : ");
                    Console.Write(item + " ");
                }
                else if (t.Equals(typeof(System.Double)))
                {

                    Console.WriteLine("더블 실수 타입");
                    Console.Write(item + " ");
                }
                else if (t.Equals(typeof(System.Single)))
                {


                    Console.WriteLine("Float(single) 실수 타입");
                    Console.Write(item + " ");

                }

            }
        }
    }
}
using Microsoft.Win32.SafeHandles;
using System;

namespace _20200701_가변인자
{
    public class ParamValue
    {
        public static void VarMethod(params object[] arr) //오브젝트 타입으로 받는다는거는 아무타입 다받을 수 있음 
        {
            Console.WriteLine("[가변 인자 개수] :" + arr.Length.ToString());
            Console.Write("[인자 전체] : ");
            foreach (object item in arr)
            {
                Console.Write(item.ToString() + " ");
            }
            Console.WriteLine();

            Console.Write("[문자열 타입] : ");
            for (int i = 0; i < arr.Length; i++)
            {
                Type T = arr[i].GetType(); //이거 왜 나와? -> 겟타입 타입을 추출하는 메서드  반환 타입이 타입이다.
                if (T.Equals(typeof(string))) //typeof -> 예약어 
                {
                    Console.Write(arr[i] + " ");
                }
            }
            Console.WriteLine();

            Console.Write("[정수 타입] : ");
            foreach (object item in arr)
            {
                Type t = item.GetType();
                if (t.Equals(typeof(int)))
                {
                    Console.Write(item + " ");
                }
            }
            Console.WriteLine();

            Console.Write("[실수 타입] : ");
            foreach (object item in arr)
            {
                Type t = item.GetType();
                if (t.Equals(typeof(float)))
                {
                    Console.Write(item + " ");
                }
            }
            Console.WriteLine();
        }
        public static void Main(string[] args)
        {
            VarMethod(1000, 2000, "3000", "헬로", 3.1, 3.2f);
        }
    }

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _20200701_덧셈해주는_함수
{
    class Program
    {
        static double add(double dnum, double dnum1)
        {
            double dnum2 = dnum + dnum1;
            return dnum2;
        }
        static float add(float fnum, float fnum1)
        {
            float fnum2 = fnum + fnum1;
            return fnum2;
        }
        static int add(int inum, int inum1)
        {
            int inum2 = inum + inum1;
            return inum2;
        }
        static void Main(string[] args)
        {
            int num = 3;
            int num1 = 4;
            int num2 = num + num1;
            Console.WriteLine($"{num}+{num1}={num2}");
            int inum3 = add(5, 6);
            Console.WriteLine($"{inum3}={5}+{6}");
            Console.WriteLine(inum3);
            double dnum3 = add(5.1, 6.1);
            Console.WriteLine($"{dnum3}={5.1}+{6.2}");
            Console.WriteLine(dnum3);
            float fnum3 = add(5.2f ,6.2f);
            Console.WriteLine($"{fnum3}={5.2f}+{6.2f}");
            Console.WriteLine(fnum3);

        }
    }
}

 

 

인수 타입으로 구분 가능하다 메서드오버로딩

 

메서드 오버로딩은 하나의 메서드 이름으로 여러 개의 메서드 구현을 하는 것을 말합니다.

 

오버로딩의 조건은 같은 메서드 이름으로 다른 매개변수로 오버로딩을 판단합니다.

메서드의 반환 타입은 오버로딩 조건에 포함되지 않습니다.

 

오버로딩

 

 

메서드 오버로딩은 코드의 이름을 일관성 있게 유지시켜줍니다.

메서드는 같은 이름으로  오버로딩 된 메서드 중에 인자 타입을 기준으로 가장 적합한걸로 적용시켜주는데 

해당 인자 타입이 없는 경우는 오류를 낸다 . 예를 들어 스트링 타입의 인자를 넣었는데 해당 인자로 구성된 메서드가 없으면 컴파일 되지 않고 오류를 낸다. 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp9
{
    class Program
    {
        static double Add(double Num1, double Num2)
        {
            double Num3 = Num1 + Num2;

            return Num3;
        }
        static float Add(float Num1, float Num2)
        {
            float Num3 = Num1 + Num2;

            return Num3;
        }
        static int Add(int iNum1, int iNum2)
        {
            int iNum3 = iNum1 + iNum2;

            return iNum3;
        }
        /*
        static float Add(int iNum1, int iNum2)
        {
            float iNum3 = iNum1 + iNum2;

            return iNum3;
        }*/
        static double AddDouble(double Num1, double Num2)
        {
            double Num3 = Num1 + Num2;

            return Num3;
        }
        static float AddFloat(float Num1, float Num2)
        {
            float Num3 = Num1 + Num2;

            return Num3;
        }
        static int AddInt(int iNum1, int iNum2)
        {
            int iNum3 = iNum1 + iNum2;

            return iNum3;
        }
        static void Main(string[] args)
        {
            int Num1 = 3;
            int Num2 = 4;
            int Num3 = Num1 + Num2;

            Console.WriteLine("{0} = {1} + {2}", Num3, Num1, Num2);

            int   iNum4 = AddInt(5, 6);
            Console.WriteLine("{0} = {1} + {2}", iNum4, 5, 6);

            float fNum4 = AddFloat(5.1f, 6.1f);
            Console.WriteLine("{0} = {1} + {2}", fNum4, 5.1f, 6.1f);

            double dNum4 = AddDouble(5.1, 6.1);
            Console.WriteLine("{0} = {1} + {2}", dNum4, 5.1, 6.1);



            int iNum5 = Add(5, 6);
            //int iNum6 = Add("5", "6");

        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _20200701_배열
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("행의 갯수를 입력하세요");
            int rows = int.Parse(Console.ReadLine());

            Console.WriteLine("열의 갯수를 입력하세요");
            int cols = int.Parse(Console.ReadLine());


            int[,] myArray = new int[rows, cols];
            Console.WriteLine(rows + "*" + cols + "배열이 생성되었습니다.");

        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _20200701_카피배열
{
    class CopyArray
    {
        static void Main(string[] args)
        {
            long[] Original = new long[4] { 3, 1, 2, 0 }; //스택 영역만 2개가 만들어지고 힙영역은 1개만
            long[] Copy = Original;

            Console.WriteLine("1 : " + Copy[3]);
            
            Original[3] = Original[1] + Original[2]; //3번자리가 0에서 합의 값 3으로 바뀐다. ,,,,,,,
            long CopyVALUE = Copy[3];
            
            Console.WriteLine("2 : " + Copy[3]); //아 배열을 이렇게 수정을 할 수 있구나 !! 
        }
    }
}
반응형