2011-12-14 2 views
0

내 항목의 가격을 비교하는 함수를 만듭니다. 양 (가격과 websiteprice)는 0.00와 같은 경우, 다음은 빈 문자열을 반환합니다, 나는 기능이 진수로 설정하면서 문자열을 반환 할 수 없습니다 알고C에서 십진법 함수로 빈 문자열 반환 #

public static decimal ComparePrice(decimal Price, decimal WebsitePrice) 
    { 
     decimal ZERO_PRICE = 0.00000M; 
     if(Price == ZERO_PRICE && WebsitePrice > ZERO_PRICE){ 
      return WebsitePrice; 
     }else if(Price == ZERO_PRICE && WebsitePrice == ZERO_PRICE){ 
      return ""; 
     }else{ 
      return Price; 
     } 

    } 

: 이 제 기능입니다 유형,하지만 난 그것에 대해 어떻게 해야할지 모르겠다. 누구든지 도울 수 있니? 감사.

답변

6

, 당신은 사용할 수 있습니다

+0

감사합니다. 잘 작동한다. – Nothing

+0

내 기쁨. :) –

1

언제나 decimal.MinValue와 같은 값을 반환 할 수 있습니다.이 값은 모두 제로 가격 항목 이었음을 나타냅니다.

2

왜 단순하게 반환하지 않습니까? 0.0 두 값이 모두 0.0 인 경우 물론 물론 0.0을 반환합니다.

는 응용 프로그램 논리에 의미가있는 경우 public static decimal? ComparePrice(decimal Price, decimal WebsitePrice)

+0

umm ... 0.0을 반환하면 반환 값 = 0.0이면 빈 문자열을 표시하고 내보기에서 다시 테스트해야합니다. 모든 항목의 가격 = 0.0이 표시되어서는 안됩니다. – Nothing

+0

은 anthony 및 Francisco가 제안한 nullable 유형 사용을 고려합니다. – Tabish

2

C 번호는 이제 꽤 오랫동안 nullable types을 갖고,이 같이 당신의 방법을 정의하고 문제의 경우에 null을 반환 시도 Nullable 유형이며 빈 문자열 대신 null을 사용합니다. Like :

public static decimal? ComparePrice(decimal Price, decimal WebsitePrice) 
    { 
     if(Price == decimal.Zero && WebsitePrice > decimal.Zero){ 
      return WebsitePrice; 
     }else if(Price == decimal.Zero && WebsitePrice == decimal.Zero){ 
      return null; 
     }else{ 
      return Price; 
     } 

    } 

또는 Decimal.MinValue를 잘못된 플래그로 사용하십시오. (나는 널 (null)을 더 좋아한다. 다시 말하면, 이것이 실제로 당신의 논리에서 유효한 값이라는 것).

+0

+1은이 기능을 구현하는 표준 방법을 사용합니다. –