ความแตกต่างระหว่างbool
และBoolean
ประเภทใน C # คืออะไร
ความแตกต่างระหว่างbool
และBoolean
ประเภทใน C # คืออะไร
คำตอบ:
bool
เป็นนามแฝงสำหรับSystem.Boolean
เช่นเดียวกับที่เป็นนามแฝงสำหรับint
System.Int32
ดูรายการเต็มรูปแบบของนามแฝงที่นี่: Built-In ตารางประเภท (C # อ้างอิง)
boolean
และBoolean
ไม่ใช่สิ่งเดียวกัน หนึ่งคือชนิดข้อมูลดั้งเดิมและอื่น ๆ เป็นวัตถุ
ฉันไม่เชื่อว่ามีอย่างใดอย่างหนึ่ง
bool
เป็นเพียงนามแฝงสำหรับ System.Boolean
พวกเขาเป็นหนึ่งเดียวกัน บูลเป็นเพียงนามแฝงสำหรับบูลีน
ไม่มีความแตกต่าง - บูลเป็นเพียงนามแฝงของ System.Boolean
http://msdn.microsoft.com/en-us/library/c8f5xwh7(VS.71).aspx
ฉันรู้ว่านี่เป็นเวลาหลายปีต่อมา แต่ฉันเจอหน้าเว็บนี้จาก google ด้วยคำถามเดียวกัน
มีความแตกต่างเล็กน้อยหนึ่งอย่างในหน้า MSDN ณ ตอนนี้
VS2005
บันทึก:
หากคุณต้องการตัวแปรบูลีนที่สามารถมีค่าเป็น null ได้ให้ใช้บูล สำหรับข้อมูลเพิ่มเติมให้ดูที่ประเภทที่ใช้งานได้ (คู่มือการเขียนโปรแกรม C #)
VS2010
บันทึก:
หากคุณต้องการตัวแปรบูลีนที่สามารถมีค่าเป็น null ได้ให้ใช้บูล? สำหรับข้อมูลเพิ่มเติมให้ดูที่ประเภทที่ใช้งานได้ (คู่มือการเขียนโปรแกรม C #)
bool
อาจมีค่าว่าง แต่Boolean
ไม่สามารถทำได้ แม้ว่าจะมีลิงก์จากเอกสารเก่าไปยังเอกสารใหม่กว่าฉันไม่ได้อ่านเอกสารใหม่กว่าอย่างละเอียดเพียงพอที่จะสังเกตเห็นความ?
แตกต่างเพียงอย่างเดียว
พวกเขาก็เหมือน ๆ กัน. บูลีนช่วยให้การแปลงไปมาระหว่าง C # และ VB.Net ง่ายขึ้น โปรแกรมเมอร์ C # ส่วนใหญ่มักจะชอบ 'บูล' แต่ถ้าคุณอยู่ในร้านที่มีทั้ง VB.Net และ C # มากคุณอาจชอบบูลีนเพราะมันทำงานได้ทั้งสองที่
ดังที่ได้กล่าวไว้พวกเขาเหมือนกัน มีสองเพราะบูลเป็นคำหลัก C # และบูลีนระดับ. Net
หนึ่งคือนามแฝงสำหรับอื่น ๆ
บูลเป็นนามแฝงสำหรับคลาสบูลีน ฉันใช้นามแฝงเมื่อประกาศตัวแปรและชื่อชั้นเมื่อเรียกวิธีการในชั้นเรียน
พวกเขาเหมือนกัน Bool เป็นเพียง System.Boolean สั้นลง ใช้ Boolean เมื่อคุณอยู่กับโปรแกรมเมอร์ VB.net เนื่องจากสามารถใช้งานได้กับทั้ง C # และ Vb
โปรดทราบว่าคุณBoolean
จะใช้งานได้ก็ต่อเมื่อคุณมีusing System;
(ซึ่งโดยปกติแล้วจะไม่รวมอยู่ด้วย) (เว้นแต่คุณจะเขียนเป็นSystem.Boolean
) bool
ไม่ต้องการusing System;
บูลเป็นประเภทดั้งเดิมหมายความว่าค่า (จริง / เท็จในกรณีนี้) จะถูกเก็บไว้ในตัวแปรโดยตรง บูลีนเป็นวัตถุ ตัวแปรประเภทบูลีนเก็บการอ้างอิงไปยังวัตถุบูลีน ข้อแตกต่างที่แท้จริงคือการจัดเก็บ วัตถุจะใช้หน่วยความจำมากกว่าประเภทดั้งเดิมเสมอ แต่ในความเป็นจริงการเปลี่ยนค่าบูลีนทั้งหมดของคุณเป็นบูลจะไม่ส่งผลกระทบใด ๆ ต่อการใช้หน่วยความจำ
ฉันผิดไป; นั่นคือวิธีการทำงานใน java ด้วยบูลีนและบูลีน ใน C #, บูลและบูลีนเป็นทั้งประเภทการอ้างอิง ทั้งคู่เก็บค่าโดยตรงในตัวแปรทั้งคู่ไม่สามารถเป็นโมฆะและทั้งคู่ต้องการเมธอด "convertTO" เพื่อเก็บค่าในประเภทอื่น (เช่น int) มันสำคัญเฉพาะกับเรื่องที่คุณใช้ถ้าคุณต้องการเรียกใช้ฟังก์ชันสแตติกที่กำหนดไว้ในคลาสบูลีน
bool
และBoolean
ไม่ใช่ประเภทที่แตกต่างกันสองประเภทประเภทหนึ่งไม่ใช่ประเภทอ้างอิงคุณสามารถเรียกใช้วิธีการคงที่กับประเภทหนึ่งโดยใช้ตัวระบุอย่างใดอย่างหนึ่งและในความเป็นจริงคุณไม่จำเป็นต้องเรียกConvertTo
วิธีการแปลงเป็นประเภทอื่น
bool
และBoolean
ทั้งสองประเภทอ้างอิง" คำbool
และBoolean
ทั้งคู่อ้างถึงประเภทเดียวกันและประเภทนั้นเป็นประเภทค่าไม่ใช่ประเภทอ้างอิง
บูลเป็นนามแฝงสำหรับบูลีน นามแฝงใดที่ทำคือแทนที่ข้อความหนึ่งสตริงด้วยข้อความอื่น (เช่น search / replace-all ใน notepad ++) ก่อนที่จะคอมไพล์โค้ด การใช้รายการใดรายการหนึ่งจะไม่มีผลในขณะใช้งาน
ในภาษาอื่น ๆ ส่วนใหญ่หนึ่งจะเป็นประเภทดั้งเดิมและอื่น ๆ จะเป็นประเภทวัตถุ (ประเภทค่าและประเภทการอ้างอิงใน C # ศัพท์แสง) C # ไม่ได้ให้คุณเลือกระหว่างทั้งสอง เมื่อคุณต้องการเรียกเมธอดสแตติกที่กำหนดไว้ในคลาสบูลีนบูลีนจะถือว่าบูลีนเป็นประเภทอ้างอิงโดยอัตโนมัติ หากคุณสร้างตัวแปรบูลีนใหม่ตัวแปรนั้นจะถือว่าเป็นประเภทอ้างอิงโดยอัตโนมัติ (ยกเว้นว่าคุณใช้วิธี Activator.CreateInstance)
บางทีบูลคือ "เบากว่า" ตาดกว่าบูลีน ที่น่าสนใจคือการเปลี่ยนสิ่งนี้:
namespace DuckbillServerWebAPI.Models
{
public class Expense
{
. . .
public bool CanUseOnItems { get; set; }
}
}
...สำหรับสิ่งนี้:
namespace DuckbillServerWebAPI.Models
{
public class Expense
{
. . .
public Boolean CanUseOnItems { get; set; }
}
}
... ทำให้ไฟล์ cs ของฉันแตก "โดยใช้ระบบ" การเปลี่ยนประเภทกลับเป็น "บูล" ทำให้ผมของประโยคที่ใช้เปลี่ยนเป็นสีเทา
(Visual Studio 2010, โครงการ WebAPI)
System.Boolean
ถูกแสดงขึ้นเพราะได้รับอนุญาตจะถูกตีความอย่างถูกต้องตาม ไม่เบาจริง ๆ มากเท่า verbose น้อยกว่า Boolean
using System;
Boolean
System.Boolean