2009-02-06 36 views
10

tôi thấy một đoạn mã mã ngày khác có thể chuyển đổi một giá trị Boolean vào "Yes"/"Không" giá trị tương ứng:.net ToString() tài liệu Định dạng

CDbl(True).ToString("Yes;Yes;No") 

Mã này hoạt động tốt nhưng tôi tò mò làm thế nào nó hoạt động và tôi đã không thể tìm thấy câu trả lời trong MSDN documentation for ToString().

Ai có thể làm sáng tỏ điều này không?

Trả lời

8

Nó coi nó là Custom Numeric Format String. Cụ thể, hãy xem phần về phân tách phần trong trang được liên kết:

';' ký tự được sử dụng để phân tách các phần cho số dương, số âm và số không trong chuỗi định dạng. Nếu có hai phần trong chuỗi định dạng tùy chỉnh, phần ngoài cùng bên trái xác định định dạng của số dương và số không, trong khi phần ngoài cùng bên phải xác định định dạng số âm. Nếu có ba phần, phần ngoài cùng bên trái xác định định dạng của số dương, phần giữa xác định định dạng số âm và phần ngoài cùng bên phải xác định định dạng của số không.

10

Hãy xem herehere, để biết tài liệu chính thức. Và điều này tuyệt vời cheatsheet từ Jhon Sheehan's Blog!

+0

Cụ thể hơn từ bảng tính được đề cập: "; Phần phân tách The ';' ký tự được sử dụng để phân tách các phần cho số dương, số âm và số không trong chuỗi định dạng. " –

+0

Cheatsheet của Jhon Sheehan là tiền! –

2

Nó đang sử dụng chuỗi định dạng chữ từ các chuỗi định dạng số tùy chỉnh. Bạn có thể cung cấp một chữ mà ánh xạ vào các tê là ​​số lượng postive, negative hoặc zero. Bản đồ "có" đầu tiên là dương, thứ hai là âm, và "không" với số không. Vì vậy, bất kỳ khác không là có, và chỉ số không là không. Điều này tương đương với sự diễn giải ngữ nghĩa đúng/sai chuẩn trên các giá trị số.

Nhìn bên dưới "dấu phân tách phần" của trang chuỗi Custom Numeric Format.

1

Vì @Joel Coehoorn và @tvanfosson cho biết, nó sử dụng chuỗi định dạng số tùy chỉnh. Lý do nó hoạt động là một giá trị boolean là chuyển đổi thành một đôi bằng cách sử dụng sau đây (chủ yếu):

public static double ToDouble(bool value) 
{ 
    return (value ? ((double) 1) : ((double) 0)); 
} 

Vì vậy, nếu giá trị là đúng, nó sẽ trả về 1 và nếu giá trị là sai nó sẽ trả về 0. Tại thời điểm đó , các quy tắc ánh xạ phần áp dụng như được mô tả bởi @tvanfosson (và sau đó là @Joel Coehoorn).

1

Steve-X có tài liệu tốt nhất cho String.Format Tôi đã nhìn thấy cho đến nay: Steve-X ToString()

Tôi biết bạn yêu cầu "ToString", nhưng ToString là phụ thuộc vào việc thực hiện bạn đang gọi (ví dụ: DateTime .ToString(), decimal.ToString ... vv).

Nếu bạn thực sự quan tâm đến cách hoạt động của hình tượng mở, hãy mở reflector và xem xét kỹ mã.

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