프로그램/C# - Study / / 2010. 10. 20. 12:47

C# - EX08

반응형


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

namespace Ex08
{
    class Program
    {
        static void Main(string[] args)
        {
            //LINQ
            //1. 암시적 타입
            // - 타입을 명시적으로 지정하지 않고 변수 선언
            // - 반드시 초기화 해야 합니다
            // - 초기화 하는 시점에 타입이 결정 됩니다.
            // - 타입이 결정된 이후에는 변경 불가능
            // - 지역변수로만 사용 가능

            //변수선언 : 자료형 변수이름
            var x = 10; // x는 int형으로 확정 (이후에는 int로만 사용)
            // x = "hello"; //오류 (형이 확정된 이후에는 변경이 불가능)

            //---------------------------------
            //3. 프로버티 초기화
            //Person person = new Person();
            //person.Number = 1;
            //person.Name = "장동건";
            //person.Phone = "12345";
            //person.Email = "jdj@example.com";
            //       같은 표현
            Person person = new Person()
            {
                Number = 1,
                Name = "장동건",
                Phone = "12345",
                Email = "jdk@example.com"
            };
            //---------------------------------
            //4. 컬렉션 초기화
            //List<Person> Persons = new List<Person>();
            //Persons.Add(new Person
            //{
            //    Number = 1,
            //    Name = "AAA",
            //    Phone = "123",
            //    Email = "email"
            //});
            //Persons.Add(new Person
            //{
            //    Number = 2,
            //    Name = "BBB",
            //    Phone = "567",
            //    Email = "email2"
            //});
            //     같은 표현
            List<Person> Persons = new List<Person>()
            {
                new Person
                {
                    Number = 1, Name = "AAA",
                    Phone = "456" // 모든 필드를 할당할 필요가 없습니다.
                },
                new Person
                {
                    Number = 1,
                    Name = "BBB",
                    Email = "email"
                }
            };
            //---------------------------------
            //5. 익명타입
            //Person person5 = new Person() { Number = 1, Name = "장동건" };
           
            //이건 person 타입이 아니다. 클래스 person 과 별개다
            var vertype = new { Number = 1, Name = "장동건" };
            Console.WriteLine(vertype.Number + "/" + vertype.Name);

            //6. ghkrwkdaptjem tkdyd
            string message = "This is Decorated Message";
            string result = message.DecoratedString("***");
            Console.WriteLine(result);

            //7.1 Delegate 사용 - 델리케이트 메서드 정의
            SumDelegate del = new SumDelegate(Sum);
            int sum = del.Invoke(10,20); // Sum 호출
            Console.WriteLine(sum);

            //7.2 Delegate 사용 - 무명 메서드
            SumDelegate del2 = delegate(int o1, int o2) { return o1 + o2; };
            int sum2 = del2.Invoke(10, 20); // Sum 호출
            Console.WriteLine(sum2);

            //7.3 Delegate 사용 - 람다 표현식
            //SumDelegate del3 = (int o1, int o2) => { return o1 + o2; };
            //SumDelegate del3 = (o1, o2) => { return o1 + o2; };
            SumDelegate del3 = (int o1, int o2) =>  o1 + o2;
            //SumDelegate del3 = (o1, o2) =>  o1 + o2;
            int sum3 = del3.Invoke(20, 20); // Sum 호출
            Console.WriteLine(sum3);

            //8. 내장 delegate
            //a. 전달인자 없는 문자열 반환 메서드 델리게이트
            Func<string> func1 = () => "Test Message";
            Console.WriteLine(func1());
            //b. 전달인자 없는 정수 반환 델리게이트
            Func<int> func2 = () => new Random().Next(100);
            Console.WriteLine(func2());

            //정수형 전달인자 4개, 정수 반환 메서드  <int, int, int, int, int> 마지막 int가 리절트 타입
            Func<int, int, int, int, int> func3 = (a, b, c, d) => a * b * c * d;
            Console.WriteLine(func3(10, 20, 30, 40));
               

        }
        public delegate int SumDelegate(int x, int y);
        private static int Sum(int x, int y)
        {
            return x + y;
        }
    }
}

///////////////////////////////////////////////////////////


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

namespace Ex08
{
    static class TheExtension
    {
        //6. 확장 메서드 (상속 없이 특정 클래스에 메서드 추가 )
        // static 클래스에 static 메서드로 정의해야합니다.
        public static string DecoratedString(
            //string 클래스를 상속하는 메서드
            this string source, string decorator)
        {
            return string.Format("{0} {1} {0}", decorator, source);
        }


    }
}



//////////////////////////////////////////////////////


using System;
using System.Collections.Generic;
using System.Text;

namespace Ex08
{
    class Person
    {
        //2. 자동 프로퍼티
        //private int number;
        //public int Number
        //{
        //    get { return number; }
        //    set { number = value; }
        //}
        public int Number { get; set; } // get, set 모두 정의
        public string Name { get; set; }
        public string Phone { get; set; }
        public string Email { get; set; }
       
    }
}


/////////////////////////////////////////

반응형

'프로그램 > C# - Study' 카테고리의 다른 글

C# - EX10  (0) 2010.10.20
C# - EX09  (0) 2010.10.20
C# - Ex07  (3) 2010.10.19
C# - EX06 - DataGridView (테이터 집합) 간단하게 DB 자료 가져오기  (0) 2010.10.18
C# - EX05 SHOWDATA, UPDATA 추가  (0) 2010.10.18
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유