Notice
Recent Posts
Recent Comments
Link
«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

つ⋅⌄⋅)づ⌁⌁도움⌁⌁⋆

2020.07.27_C#복습 본문

카테고리 없음

2020.07.27_C#복습

ㅈㅏ윤이 2020. 7. 27. 18:23

< 가변 매개변수 : params >

: 입력받을 인자의 타입에 해당하는 배열을 선언한 다음 params 예약어를 붙이면 된다

: 4, 5. 6... 개의 인자를 받게 하려면 params 예약어를 사용해 가변 인자를 지정해주면 가능!

static void Main(string[] args)
        {
            Console.WriteLine(Add(1, 2, 3, 4, 5));
            Console.WriteLine(Add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
        }
        static int Add(params int[] values)
        {
            int result = 0;

            for (int i = 0; i < values.Length; i++)
            {
                result += values[i];
            }
            return result;
        }
static void Main(string[] args)
        {
            PrintAll(1.05, "Result", 3);
        }
        private static void PrintAll(params object[] values)
        {
            foreach (object value in values)
            {
                Console.WriteLine(value);
            }
        }

< Win32 API 호출 : extern >

: MessageBeep함수 사용 

: Win32 API와 C#코드를 연결하는 역할 : DllImport 특성을 적용해야 한 이용할 수 있다

: 닷넨 CLR은 DLLImport 특성으로 전달된 DLL 파일명에  exturn  예약어가 지정된 메서드와 시그니처가 동일한

 Win 32 API를 연결한다

** exturn구문을 작성하려면 세 가지 정보가 필요하다

- 비관리 코드를 제공하는 DLL이름

- 비관리 코드의 함수 이름

- 비관리 코드의 함수 형식(signature)

class Program
    {
        [DllImport("user32.dll")]
        static extern int MessageBeep(uint uType);

        static int TestMethod(uint type)
        {
            return 0;
        }
        static void Main(string[] args)
        {
            MessageBeep(0);
        }
    }

< 안전하지 않은 컨텍스트 : unsafe  >

 static void Main(string[] args)
        {
            int iNum = 100;
            //안전하지않다는 것을 인지하고 있다고 공지
            unsafe 
            {
                Console.WriteLine("{0}:X", (int)&iNum);
            }
        }