2010-07-23 2 views
2

내 응용 프로그램에서는 List를 매개 변수로 전달해야합니다.이 방법은 C#에서 매개 변수를 전달할 때 유용합니다.

내가

List<stuff.Inventory> inv = new List<stuff.Inventory>(); 
inv.Add(stuff.Inventory.NotAvailable); 
inv.Add(stuff.Inventory.None); 
inv.Add(stuff.Inventory.Coming); 

if (stuff.isStuffinInv(inv, prodID)) 
{ 
    // ... 
} 

는 내 방식이 옳다거나 이름 지정 규칙과 들여 쓰기를 제외하고,이

답변

6

음을 수행하는 새로운 방법이 필요 쓰기, 괜찮아 보인다.

는 C# 3를 사용하면 다음과 같이 컬렉션 이니셜 라이저를 사용할 수 있습니다 일반적으로 더 읽기 접근 방식

List<Inventory> inventory = new List<Inventory> 
{ 
    Inventory.NotAvailable, Inventory.None, Inventory.Coming 
}; 
if (stuff.isStuffInInv(inventory, prodID)) 
... 

을, IMO.

+1

'inventory'의 이름이 일치하지 않습니다. 함수에'inv'를 전달합니다. 복사 - 붙여 넣기 오류. =] – dlras2

+0

@ 대니얼 : 고마워. –

2
List<stuff.Inventory> inv = new List<stuff.Inventory>() 
{ 
    stuff.Inventory.NotAvailable, 
    stuff.Inventory.None, 
    stuff.Inventory.Coming 
}; 

당신이 설명한대로부터 열거 형이 더 적합할까요?

+0

@ martin 코드에서 간단한 실수를 한 적이 있습니까? ")" –

+0

죄송합니다, 지금 고정 :) –

5

보기에서 보면 인벤토리는 emum 인 것으로 보입니다. 대신 FlagsAttribute을 사용해 보셨습니까?

0

특히 그 코드에는 아무런 문제가 없지만 isStuffInInv 메서드 대신 LINQ를 사용하여 목록을 쿼리하는 것이 좋습니다.

if (inv.Any(x => x._?_ == prodID)); 
+2

여기에 동의해야합니다. IsStuffInInv는 LINQ 쿼리보다 훨씬 읽기 쉽습니다. 후드에서 LINQ 쿼리를 사용하는 것이 더 좋은 생각이지만 IsStuffInInv가 이미이 작업을 수행하고 있음을 모두 알고 있습니다. – James

+0

@ mark linq과 놀고 싶지 않습니다. 난 그냥 내가 이미 가지고있는 간단한 C# 방법이 필요합니다 –

+0

@ 4thpage : 당신은 LINQ를 사용하여 마크의 제안을 써서는 안됩니다. 나는 단순히 당신이 당신의'IsStuffInInv' 메소드를 직접 바꾸어야한다는 사실에 의문을 제기하고있었습니다. IMO는 해당 메서드의 내부 동작이 LINQ 쿼리의 일부 형식을 수행해야합니다 (더 빠르게 최적화 된 솔루션을 사용하지 않는 경우). – James

관련 문제