Sự khác biệt giữa bool
và Boolean
các loại trong C # là gì?
Sự khác biệt giữa bool
và Boolean
các loại trong C # là gì?
Câu trả lời:
bool
là một bí danh cho System.Boolean
giống như int
một bí danh cho System.Int32
. Xem danh sách đầy đủ các bí danh tại đây: Bảng loại tích hợp (Tham khảo C #) .
boolean
và Boolean
không phải là điều tương tự. Một là kiểu dữ liệu nguyên thủy và kiểu kia là một đối tượng.
Không có sự khác biệt - bool chỉ đơn giản là một bí danh của System.Boolean.
http://msdn.microsoft.com/en-us/l Library / c8f5xwh7 (VS.71) .aspx
Tôi nhận ra điều này là nhiều năm sau nhưng tôi tình cờ thấy trang này từ google với cùng một câu hỏi.
Cho đến nay, có một sự khác biệt nhỏ trên trang MSDN.
VS2005
Ghi chú:
Nếu bạn yêu cầu biến Boolean cũng có thể có giá trị null, hãy sử dụng bool. Để biết thêm thông tin, hãy xem Các loại không thể (Hướng dẫn lập trình C #).
VS2010
Ghi chú:
Nếu bạn yêu cầu biến Boolean cũng có thể có giá trị null, hãy sử dụng bool?. Để biết thêm thông tin, hãy xem Các loại không thể (Hướng dẫn lập trình C #).
bool
có thể chứa null, nhưng Boolean
không thể. Mặc dù có một liên kết từ tài liệu cũ hơn đến tài liệu mới hơn, tôi đã không đọc kỹ tài liệu mới hơn đủ để nhận thấy sự ?
khác biệt duy nhất .
Họ giống nhau. Boolean giúp đơn giản hóa chuyển đổi qua lại giữa C # và VB.Net. Hầu hết các lập trình viên C # có xu hướng thích 'bool', nhưng nếu bạn đang ở trong một cửa hàng có nhiều VB.Net và C # thì bạn có thể thích Boolean vì nó hoạt động ở cả hai nơi.
bool là một bí danh cho lớp Boolean. Tôi sử dụng bí danh khi khai báo một biến và tên lớp khi gọi một phương thức trên lớp.
Chúng giống nhau, Bool chỉ là System.Boolean rút ngắn. Sử dụng Boolean khi bạn ở với lập trình viên VB.net, vì nó hoạt động với cả C # và Vb
Lưu ý rằng Boolean
sẽ chỉ có công việc bạn có using System;
(thường là, nhưng không nhất thiết, bao gồm) (trừ khi bạn viết nó ra System.Boolean
). bool
không cầnusing System;
bool là một kiểu nguyên thủy, có nghĩa là giá trị (true / false trong trường hợp này) được lưu trữ trực tiếp trong biến. Boolean là một đối tượng. Một biến kiểu Boolean lưu trữ một tham chiếu đến một đối tượng Boolean. Sự khác biệt thực sự duy nhất là lưu trữ. Một đối tượng sẽ luôn chiếm nhiều bộ nhớ hơn loại nguyên thủy, nhưng trong thực tế, việc thay đổi tất cả các giá trị Boolean của bạn thành bool sẽ không có bất kỳ tác động đáng chú ý nào đối với việc sử dụng bộ nhớ.
Tôi đã sai; đó là cách nó hoạt động trong java với boolean và Boolean. Trong C #, bool và Boolean đều là loại tham chiếu. Cả hai đều lưu trữ giá trị của chúng trực tiếp trong biến, cả hai đều không thể rỗng và cả hai đều yêu cầu phương thức "convertTO" để lưu trữ giá trị của chúng trong một loại khác (chẳng hạn như int). Nó chỉ quan trọng cái nào bạn sử dụng nếu bạn cần gọi một hàm tĩnh được định nghĩa trong lớp Boolean.
bool
và Boolean
không phải là hai loại khác nhau, một loại không phải là loại tham chiếu, bạn có thể gọi một phương thức tĩnh trên một loại đó bằng cách sử dụng một mã định danh và trên thực tế bạn không cần phải gọi một ConvertTo
phương thức để chuyển đổi nó sang loại khác.
bool
và Boolean
cả hai loại tham chiếu". Các từ bool
và Boolean
cả hai đều đề cập đến cùng một loại và loại đó là loại giá trị, không phải loại tham chiếu.
bool là một bí danh cho Boolean. Những bí danh làm là thay thế một chuỗi văn bản bằng một chuỗi khác (như tìm kiếm / thay thế tất cả trong notepad ++), ngay trước khi mã được biên dịch. Sử dụng cái này không có tác dụng trong thời gian chạy.
Trong hầu hết các ngôn ngữ khác, một ngôn ngữ sẽ là một kiểu nguyên thủy và ngôn ngữ kia sẽ là một loại đối tượng (kiểu giá trị và kiểu tham chiếu trong thuật ngữ C #). C # không cung cấp cho bạn tùy chọn giữa hai. Khi bạn muốn gọi một phương thức tĩnh được định nghĩa trong lớp Boolean, nó sẽ tự động coi Boolean như một kiểu tham chiếu. Nếu bạn tạo một biến Boolean mới, nó sẽ tự động coi nó như một kiểu tham chiếu (trừ khi bạn sử dụng phương thức Activator.CreateInstance).
Có lẽ bool là một "nhẹ" hơn Boolean; Thật thú vị, thay đổi điều này:
namespace DuckbillServerWebAPI.Models
{
public class Expense
{
. . .
public bool CanUseOnItems { get; set; }
}
}
... đến đây:
namespace DuckbillServerWebAPI.Models
{
public class Expense
{
. . .
public Boolean CanUseOnItems { get; set; }
}
}
... khiến tệp cs của tôi mọc lên "sử dụng Hệ thống;" Thay đổi kiểu trở lại thành "bool" khiến tóc của mệnh đề sử dụng chuyển sang màu xám.
(Visual Studio 2010, dự án WebAPI)
System.Boolean
chứ không chỉ là Boolean
. Điều using System;
này đã được hiển thị bởi vì nó được phép Boolean
giải thích chính xác như System.Boolean
. Không thực sự nhẹ hơn nhiều như chỉ ít dài dòng.