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 |