2014-07-09 18 views
6

Đối với tiền tôi đang sử dụng loại giá trị tùy chỉnh chỉ giữ một trường decimal. Mã đơn giản như sau.Tôi có thể chỉ định hậu tố cho loại giá trị tùy chỉnh của mình không?

public struct Money 
{ 
    private decimal _value; 

    private Money(decimal money) 
    { 
     _value = Math.Round(money, 2, MidpointRounding.AwayFromZero); 
    } 

    public static implicit operator Money(decimal money) 
    { 
     return new Money(money); 
    } 

    public static explicit operator decimal(Money money) 
    { 
     return money._value; 
    } 
} 

Trong khi sử dụng cấu trúc này trong dự án của tôi đôi khi một sự mơ hồ phát sinh. Và đôi khi tôi thiết lập một số object với số không đổi được cho là Money. Hiện tại, tôi đang khởi tạo đối tượng như,

object myObject=(Money)200; 

Tôi có thể chỉ định hậu tố cho loại tùy chỉnh Money của mình không. Tôi muốn khởi tạo đối tượng với những điều sau đây.

object myObject=200p; 
+4

Không, điều này không thể trong C#. Bạn có thể viết một bộ tiền xử lý để làm điều đó tuy nhiên. – leppie

+0

Bạn không thể. Btw 'p' có nghĩa là gì? Bảng? –

+1

Có lẽ bạn có thể tự viết cho mình một hàm tạo hoặc toán tử ngầm với một tham số chuỗi và phân tích cú pháp nó theo cách thủ công bên trong. – Tarec

Trả lời

7

Bạn không thể gán hậu tố tùy chỉnh bằng C#. Điều gần nhất bạn có thể làm là tạo ra phương pháp mở rộng cho số nguyên:

public static Money Para(this int value) // you can do same for decimals 
{ 
    return (Money)((decimal)value); 
} 

Cách sử dụng:

var amount = 200.Para(); 
+0

Lợi thế của việc này vượt quá '(Tiền) 200' là gì? – serdar

+0

@serdar IntelliSense. Bạn chỉ cần in dot-p-tab và nó được thực hiện (xin lỗi, tiếc là nó không làm việc với các số nguyên literals mà không có dấu ngoặc). Ngoài ra đối với tôi, nó có thể đọc được như văn bản thuần túy –

Các vấn đề liên quan