Bagaimana Anda mengonversi nullable bool?
menjadibool
di C #?
Saya telah mencoba x.Value
atau x.HasValue
...
Anda pada akhirnya harus memutuskan apa yang akan diwakili oleh null bool. Jika null
seharusnya false
, Anda dapat melakukan ini:
bool newBool = x.HasValue ? x.Value : false;
Atau:
bool newBool = x.HasValue && x.Value;
Atau:
bool newBool = x ?? false;
VB.NET
jika Anda melakukandim newBool as Boolean = CBool(x)
:? Akannull
dikonversifalse
atau akankah pengecualian dilemparkan?Linq
pernyataan klausa 'Di mana', saya tidak mengerti mengapalifted operators
tampaknya tidak berfungsi di dalam Linq (mungkin hanya VB.NET?) - Saya baru saja menguji dan itu tidak melempar pengecualian pemain yang tidak validAnda dapat menggunakan null-penggabungan Operator :
x ?? something
, di manasomething
adalah nilai boolean yang ingin Anda gunakan jikax
ininull
.Contoh:
newBool
akan salah.sumber
bool? myBool = null; bool newBool = myBool ?? false;
Anda bisa menggunakan
Nullable{T}
GetValueOrDefault()
metode. Ini akan mengembalikan nilai salah jika nol.sumber
if (nullableBool.GetValueOrDefault())
Jika Anda akan menggunakan
bool?
in sebuahif
pernyataan, menurut saya hal termudah untuk dilakukan adalah membandingkannya dengantrue
ataufalse
.Tentu saja, Anda juga bisa membandingkan dengan null.
Jika Anda akan mengubahnya menjadi bool untuk diteruskan ke bagian lain dari aplikasi, maka operator Null Coalesce adalah yang Anda inginkan.
Jika Anda sudah memeriksa null, dan Anda hanya menginginkan nilainya, akses properti Value.
sumber
Cara termudah adalah dengan menggunakan operator penggabungan nol:
??
The
??
with nullable values bekerja dengan memeriksa ekspresi nullable yang disediakan. Jika ekspresi nullable memiliki nilai, nilainya akan digunakan jika tidak akan menggunakan ekspresi di sebelah kanan??
sumber
sumber
Cara lengkapnya adalah:
Atau Anda dapat menguji nilai tertentu menggunakan
sumber
Sesuatu seperti:
sumber
Jawaban ini untuk kasus penggunaan saat Anda hanya ingin menguji
bool?
dalam kondisi. Itu juga bisa digunakan untuk menjadi normalbool
. Ini adalah alternatif yang menurut saya lebih mudah dibaca daripadacoalescing operator ??
.Jika Anda ingin menguji suatu kondisi, Anda dapat menggunakan ini
Di atas jika akan benar hanya jika
bool?
benar.Anda juga dapat menggunakan ini untuk menetapkan reguler
bool
dari abool?
penyihir sama dengan
sumber
Ini adalah variasi tema yang menarik. Pada pandangan pertama dan kedua Anda akan berasumsi bahwa cabang yang sebenarnya telah diambil. Tidak begitu!
Cara mendapatkan apa yang Anda inginkan adalah dengan melakukan ini:
sumber
System.Convert bekerja dengan baik oleh saya.
using System; ... Bool fixed = Convert.ToBoolean(NullableBool);
sumber