2010-08-13 46 views

Trả lời

76

Thuộc tính có thể trả lại bất kỳ thứ gì họ muốn nhưng cần phải trả lại đúng loại.

private decimal _amount; 

public string FormattedAmount 
{ 
    get { return string.Format("{0:C}", _amount); } 
} 

Câu hỏi đã được hỏi ... nếu đó là số thập phân có thể vô hiệu.

private decimal? _amount; 

public string FormattedAmount 
{ 
    get 
    { 
     return _amount == null ? "null" : string.Format("{0:C}", _amount.Value); 
    } 
} 
+0

Điều gì xảy ra nếu số tiền là một số thập phân có thể vô hiệu? – Groppe

+0

Tôi đã chỉnh sửa bản gốc để cung cấp cho bạn một ví dụ. – Robaticus

+0

Bạn cũng có thể chỉ định số chữ số thập phân mong muốn sau chữ C, ví dụ: nếu giá trị của bạn là 12.123 và bạn chỉ muốn 2 chữ số thập phân trong đầu ra, bạn có thể sử dụng String.Format ("{0: C2}", Hơn nữa, bạn có thể chỉ định IFormatProvider nếu bạn muốn chuỗi của bạn được định dạng thành một nền văn hóa cụ thể. –

0

Loại thập phân không thể chứa thông tin định dạng. Bạn có thể tạo một thuộc tính khác, giả sử FormattedProperty của loại chuỗi thực hiện những gì bạn muốn.

26

Dưới đây cũng sẽ làm việc, nhưng bạn không thể đặt trong getter của một tài sản thập phân. Bộ thu thập của một thuộc tính thập phân chỉ có thể trả về một số thập phân mà định dạng không áp dụng.

decimal moneyvalue = 1921.39m; 
string currencyValue = moneyvalue.ToString("C"); 
1

Định dạng trả về của bạn sẽ bị giới hạn bởi loại trả về bạn khai báo. Vì vậy, có, bạn có thể khai báo thuộc tính dưới dạng một chuỗi và trả về giá trị được định dạng của một cái gì đó. Trong "get" bạn có thể đặt bất kỳ mã truy xuất dữ liệu nào bạn cần. Vì vậy, nếu bạn cần truy cập vào một số giá trị số, chỉ cần đặt câu trả lại của bạn là:

private decimal _myDecimalValue = 15.78m; 
    public string MyFormattedValue 
    { 
     get { return _myDecimalValue.ToString("c"); } 
     private set; //makes this a 'read only' property. 
    } 
6

Hãy thử điều này;

string.Format(new CultureInfo("en-SG", false), "{0:c0}", 123423.083234); 

Nó sẽ chuyển đổi 123423.083234 thành định dạng $ 1,23,423.

1

Bây giờ bạn có thể sử dụng chuỗi suy và biểu hiện tính chất thân vỏ trong C# 6.

private decimal _amount; 

public string FormattedAmount => $"{_amount:C}"; 
2

Bạn có thể tạo ra một phương pháp khuyến nông. Tôi thấy đây là phương pháp hay vì bạn có thể cần khóa màn hình tiền tệ bất kể cài đặt trình duyệt. Ví dụ: bạn có thể muốn hiển thị $ 5,000.00 luôn thay vì 5 000,00 $ (#CanadaProblems)

public static class DecimalExtensions 
{ 
    public static string ToCurrency(this decimal decimalValue) 
    { 
     return $"{decimalValue:C}"; 
    } 
} 
Các vấn đề liên quan