2014-02-28 3 views
3

나는 다음과 같은 코드를 가지고 :이 두 줄을 어떻게 하나의 문장으로 리펙토링 할 수 있습니까?

// TryGetAttributeValue returns string value or null if attribute not found 
var attribute = element.TryGetAttributeValue("bgimage"); 

// Convert attribute to int if not null 
if (attribute != null) BgImage = convert.ToInt32(attribute); 
내가 좋아하지 않는 것은 내가, 임시 변수, attribute을 만들 위하여는 null이다 아닌지 테스트 한 다음에 값을 할당해야한다는 것입니다

BgImage 변수 nullable int입니다.

한 줄로 모두 쓸 수있는 방법을 찾아 낼 수 있었으면 좋겠어. 난 삼항 문을 사용했지만, 아무데도 없어 :

if (element.TryGetAttributeValue("bgimage") != null) ? BgImage = //Convert result to int : else null; 

가 현실적으로 코드 내 원래 두 줄이 일을하고 있어요. 나는 그것을 한 줄로 줄이려고했다. 그러나, 누군가가 내가 성취하려는 것을 어떻게하는지 안다면, 어떻게 배우는 지 알고 싶습니다.

+0

당신이 XML과 같은 구문 분석하고 있습니까? –

+2

'TryGetAttributeValueAsInt' 확장? –

+0

@ SergeyBerezovskiy 예, 있습니다. BgImage 속성은 null 또는 0을 포함하는 int 중 하나 일 수 있습니다. – Kevin

답변

3

나는 (당신이 널 정수로 BgImage이 당신의 시도에 따라) 당신이 XML을 구문 분석 Linq to Xml을 사용하는 것이 좋습니다 :

BgImage = (int?)element.Attribute("bgimage"); 

당신은 또한 몇 가지 기본 값을 할당 할 수 있습니다 BgImage이 널이 아닌 경우 :

BgImage = (int?)element.Attribute("bgimage") ?? 0; 
TryGetAttributeValue 가정
+1

이것은 나를 위해 잘 돌아갔다. "TryGetAttribute"메서드를 전혀 사용할 필요가 없었으며 찾고 있던 결과를 얻었습니다. 나는 타이머가 끝나자 마자 이것을 답으로 표시 할 것이다. 감사! – Kevin

2

string 당신이

BgImage = convert.ToInt32(element.TryGetAttributeValue("bgimage") ?? "-1") 
처럼 뭔가를 할 수 반환3210

속성이없는 경우 BgImage을 기본값 (-1)으로 설정합니다. 당신이 nullBgImage 설정을 가지고 원하는 경우에는 bgimage 속성은이 작은 비트 clunkier 도착 후이없는 경우

BgImage = element.TryGetAttributeValue("bgimage") != null ? 
    convert.ToInt32(element.TryGetAttributeValue("bgimage")) : (int?)null; 
+0

속성이 null이면'BgImage'가 -1이 아닌 것으로 가정합니다. – Lee

+0

'TryGetAttributeValue'는 발견 된 문자열을, 찾지 못하면 'null'을 반환합니다. BgColor는 0 또는 'null'값을 포함하여 int 일 수 있습니다. – Kevin

+0

@KevinJ 그래서 속성을 찾을 수없는 경우'BgImage'를'null'로 설정하는 것을 선호합니까? – James

관련 문제