2011-12-15 41 views
12

Giả sử tôi muốn tạo một bí danh của một loại trong C# sử dụng một cú pháp giả:Kỹ thuật đánh răng trong C#?

Currency = float; 

Sau đó, tôi đi xa và tạo ra một vài ngàn file mà sử dụng Currency loại.

Sau đó, tôi nhận ra rằng tôi thích sử dụng loại FCL:

Currency = System.Single; 

Tuyệt vời, tất cả các mã vẫn hoạt động.

... tháng sau ...

Chờ, tôi nhận được một số lỗi làm tròn kỳ lạ. Đó là lý do tại sao, System.Single only has 7 digits of precision. Cho phép lên đến 15 chữ số:

Currency = System.Double; 

... năm sau ...

Ohhhh, điểm nổi không phải là chính xác; nhân $0.0011/unit * 217,384 units cho thấy một số hạn chế của việc sử dụng dấu phẩy động. Và kế toán là những người gắn bó chống lại "bất thường kế toán". Không có vấn đề:

Currency = System.Decimal; 

... năm sau ...

ứng dụng quốc tế? Mã tiền tệ. Hmmmm. Thank you CodeProject:

Currency = Money; 

... sau đó ...

Ooo, mô hình và thực tiễn. Hãy làm xáo trộn một số mã đó:

Currency = ICurrency; 

Và trong tất cả mã vô nghĩa này không bị phá vỡ.

tôi biết C# không hỗ trợ cấp độ này encapsulation và khả năng phục hồi với cú pháp tôi đã tạo.

Nhưng bất cứ ai có thể đề nghị một cú pháp mà có thể simulatewhatpeoplehavebeentryingtoaccomplish (includingmyself)?

+2

về cơ bản một typedef trong C++/C –

+1

Tôi cho rằng bạn biết về "sử dụng bí danh" ...? –

+1

Tôi sử dụng "loại bí danh" ("sử dụng bí danh") để làm cho mã dễ theo dõi nhất quán ... tuy nhiên, điều này nghe có vẻ như một sự thay đổi đột ngột. Các quy tắc (và chữ ký) về loại đang được sử dụng sẽ bị thay đổi. –

Trả lời

4

Bạn có thể sử dụng using như sau: using Currency = System.Single;, nhưng bạn phải làm điều đó trong mọi tệp. Nhưng vẫn dễ thay đổi hơn là tìm kiếm đơn lẻ trong toàn bộ ứng dụng.

5

Tạo một lớp được gọi là Tiền tệ và thực hiện (hoặc ủy quyền) toán tử thích hợp, sau đó chỉ cần thay đổi lớp được sử dụng để lưu trữ dữ liệu nội bộ khi muốn.

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