Genç kuralları biliyor, ama yaşlı istisnaları biliyor;)
Sonunda C#, bir ile başa null-able boolçıkıyorsanız, o zaman yapmanız gereken:
bool? x = null;
bool? y = true;
bool? z = false;
if (x == true || y == true || z == true) {
// That was the only way that is reasonably readable that I know of
// to accomplish this expression.
}
Tristat sorun değilse, genellikle true/ ile karşılaştırmak için bir sebep olmamalıdır True. Bununla birlikte, içinde Pythonve C/C++sizin gibi birkaç başka dilde ifbir bool olmayan ifadede gerçekleştirebilirsiniz. Bu dillerin tamsayıları, işaretçileri, listeleri vb. Doğru ya da yanlış olarak yorumlaması için benzersiz kuralları vardır. Bazen bunu istemezsin. Örneğin, bu Python kod parçasında:
x = True
y = 'abcdef'
z1 = x and y
z2 = (x == True) and (y == True)
Burada zolmalı True, fakat z2olmalıdır False. Şimdi, bir Clojuredil buna başka bir yoldan yaklaşır - orada andişlev mutlaka bir a'ya göre değerlendirilmez bool, bununla ifbaşa çıkabilir.
Ne olursa olsun dilin, her zaman kendinizi bir şeyler karşılaştırarak bulmak Trueya False, muhtemelen yorumlama değer.
if (some_flag == true)örtük olanı tercih ederimif (is_something)veyaif (has_something). Değişken isimlerini not edin.