2010-04-09 27 views

Trả lời

24

Có, đây là as documented:

[ném] FormatException [nếu] giá trị không bằng TrueString hoặc FalseString.

TrueString là "True" và FalseString là "False".

Nếu bạn muốn phát hiện xem một chuỗi là "1" hay không, sử dụng mã này:

bool foo = text == "1"; 
+0

sir, tôi đã thử với mã này và nó hoạt động. Có cách nào tốt hơn để thực hiện chuyển đổi này không. Boolean someBool = ddlSpeechRecognition.SelectedItem.Value == "1"? đúng sai; – Rohit

+2

@Rohit: Không cần sử dụng toán tử có điều kiện. Chỉ cần làm 'Boolean someBool = ddlSpeechRecognition.SelectedItem.Value ==" 1 ";' –

+0

@Rohit: Nó không phải là "chuyển đổi". Bạn so sánh chuỗi, ddlSpeechRecognition.SelectedItem.Value, với chuỗi khác, "1". So sánh đó có giá trị boolean. –

5

Phụ thuộc vào những gì bạn muốn. Có lẽ

var result = Convert.ToInt32(yourstirng) != 0 

giả định bất kỳ số nào nhưng 0 là đúng. Nếu không, một so sánh đơn giản sẽ hoạt động.

var result = yourstirng == "1" 
3

Tham số phải bằng Boolean.TrueString hoặc Boolean.FalseString. Các giá trị của các chuỗi này là "Đúng" và "Sai", tương ứng. Xem MSDN.

Giá trị chuỗi "1" rõ ràng không bằng "Đúng" hoặc "Sai".

3

Vấn đề là, bạn đang đưa ra một Chuỗi ở đây, không phải là số. Nó không thể chuyển đổi chuỗi "1" thành true, nhưng int 1.

Convert.ToBoolean(1);

sẽ hoạt động.

0

Tôi biết điều này là cũ, nhưng trong trường hợp ai đó tìm kiếm ... chỉ đơn giản làm điều này:

Convert.ToBoolean (Convert.ToInt16 ("1")) làm việc tốt. Không đẹp, nhưng cần được.

0

Một giải pháp khác là sử dụng Phương thức tiện ích mở rộng trên đối tượng chuỗi. Tôi đã sử dụng kỹ thuật này trong trường hợp tôi phải phân tích cú pháp các tệp CSV có các chuỗi khác nhau phải được chuyển đổi thành các giá trị boolean tùy thuộc vào nguồn và định dạng của chúng.

public static class StringExtensions 
{ 
    public static bool ToBool(this string value,string trueValue) 
    { 
     if (value == trueValue) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 
} 

này sẽ được gọi là như vậy ...

MyProperty = CsvColumn[6].ToBool("1"); 

Nếu bạn muốn, tham số truevalue có thể là một mảng chuỗi nếu bạn cần thiết để so sánh nhiều giá trị (như n/a, na, không) và bạn có thể thêm vào các giá trị sai nếu bạn muốn hạn chế hơn nữa hoặc sử dụng các loại nullable.

1

Khi chuyển sang Boolean, tốt nhất là sử dụng thường lệ của riêng bạn, nơi bạn xử lý tất cả các trường hợp. .net Convert.ToBoolean không phải là một thói quen thực tế, nó là một trong những chức năng mà bạn phải giải thích lý do tại sao nó không hoạt động.