반응형
SMALL
객체 이니셜라이저 예제
App Class
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study011
{
class App
{
public string Name
{
get; set;
}
public int damage;
//생성자
public App()
{
//생성자 매개변수 활용
Item item = new Item("홍길동",10);
// 두번째 방법
Item item2 = new Item();
item.Name = "장검";
item.damage = 10;
//개체 이니셜라이저
//해당 객체가 가지고 있는 속성(프로퍼티), 필드에 접근 가능
//컨트롤 + 스페이스바 로 자동 접근 가능
Item item1 = new Item() { Name = "단검", damage = 10 };
}
}
}
생성자 오버로드
App Class
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study11
{
class App
{
//생성자
public App()
{
//생성자 매개변수를 활용
Item item0 = new Item("창", 11);
//인스턴스 만들고 개별로 데이터 넣기
Item item1 = new Item();
item1.Name = "장검";
item1.damage = 8;
//개체 이니셜라이져 (프로퍼티, 필드)
//컨트롤 + 스페이스바
Item item2 = new Item() { Name = "단검", damage = 5 };
}
}
}
객체 이니셜라이저를 이용 for문으로 아이템 데미지가 일정값이상인 아이템만 골라오
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study011
{
class App
{
public string Name
{
get; set;
}
public int Damage
{
get; set;
}
//생성자
public App()
{
Item[] items =
{
new Item(){Name = "장검",damage = 10},
new Item(){Name = "단검",damage = 5 },
new Item(){Name = "창",damage = 11 },
new Item(){Name = "도끼",damage = 8 },
new Item(){Name = "도끼",damage = 8 },
new Item(){Name = "활",damage = 6 },
new Item(){Name = "철퇴",damage = 7 },
};
//Damage 가 5 이상인 모든 아이템을 출력하세요.
//원래대로면 우리는 for문으로 했을것이다.
for(int i =0;i < items.Length; i++)
{
Item item = items[i];
if (item.damage > 5)
{
Console.WriteLine("{0}, damage : {1}", item.Name, item.damage);
}
}
}
}
}
실제 LINQ 사용
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study11
{
class App
{
//생성자
public App()
{
Item[] items = {
new Item(){ Name="장검", Damage = 10},
new Item(){ Name="단검", Damage = 5},
new Item(){ Name="창", Damage = 11},
new Item(){ Name="도끼", Damage = 8},
new Item(){ Name="지팡이", Damage = 3},
new Item(){ Name="활", Damage = 6},
new Item(){ Name="철퇴", Damage = 7},
};
//damage가 5 이상인 모든 아이템들을 List 에 넣고 List에 있는 모든 요소를 출력
List<string> list = new List<string>(); //컬렉션 사용전 인스턴스화 필수
for (int i = 0; i < items.Length; i++) {
Item item = items[i];
if (item.Damage >= 5) {
list.Add(item.Name);
}
}
//foreach (string itemName in list) {
// Console.WriteLine("{0}", itemName);
//}
//Linq
//IEnumerable<string> itemNames = from 범위변수 in 컬렉션
IEnumerable<string> itemNames = from item in items
where item.Damage >= 5
//orderby item.Damage ascending //오름차순
orderby item.Damage descending //내림차순
select item.Name;
foreach (string itemName in itemNames) {
Console.WriteLine(itemName);
/LINQ가 5이상인 아이템들을 필터
//새로운 시퀀스에 담고 싶다.
//원본을 안건드리고 시퀀스를 이용하고 싶다.
//새시퀀스들을 어떤 값들로 넣을까
//ex) List에 있는 아이템들은 등급이 있다.
//아이템들중에 신화급 아이템들만 사용자에게 보여주고 싶다
//인터페이스는 인스턴스화 할수 없기 떄문에 그냥 타입이다.
// var itemNames = from 범위변수 in 컬렉션
IEnumerable<string> itemNames = from item //foreach의 반복변수에는 타입이 있었지만 여긴 없음
in items
where item.Damage >= 5
//orderby item.Damage ascending //오름차순
orderby item.Damage descending //내림차순
select item.Name; //반환값이 string 임
foreach(string itemName in itemNames)
{
Console.WriteLine(itemName);
}
}
}
}
}
LINQ 무명형식사용
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study11
{
class App
{
//생성자
public App()
{
Item[] items = {
new Item(){ Name="장검", Damage = 10},
new Item(){ Name="단검", Damage = 5},
new Item(){ Name="창", Damage = 11},
new Item(){ Name="도끼", Damage = 8},
new Item(){ Name="지팡이", Damage = 3},
new Item(){ Name="활", Damage = 6},
new Item(){ Name="철퇴", Damage = 7},
};
//damage가 5 이상인 모든 아이템들을 List 에 넣고 List에 있는 모든 요소를 출력
List<string> list = new List<string>(); //컬렉션 사용전 인스턴스화 필수
for (int i = 0; i < items.Length; i++) {
Item item = items[i];
if (item.Damage >= 5) {
list.Add(item.Name);
}
}
//foreach (string itemName in list) {
// Console.WriteLine("{0}", itemName);
//}
//Linq
//IEnumerable<string> itemNames = from 범위변수 in 컬렉션
var sequence = from item in items
where item.Damage >= 5
//orderby item.Damage ascending //오름차순
//orderby item.Damage descending //내림차순
select new { Name = item.Name };
foreach (var item in sequence)
{
Console.WriteLine(item.Name);
}
}
}
}
LINQ의 쿼리 구문 및 메서드 구문 - 예시 없었음
반응형
LIST
'C# > 수업 내용' 카테고리의 다른 글
2023.01.13 오전 수업 내용 : 직렬화 (0) | 2023.01.13 |
---|---|
상점 목록 및 미션 목록 & 보상 출력 (역직렬화 이용) (1) | 2023.01.13 |
람다 문 사용 예시2 (0) | 2023.01.11 |
람다문 사용 예시 (0) | 2023.01.11 |
오후 수업내용 : 익명 메서드 (0) | 2023.01.11 |