Geçtiğimiz günlerde, int?
ile bir dizeyi birleştirdiğimde ve bundan sonra başka bir dizgi eklerken garip bir hatam vardı.Garip operatör önceliği ?? (null coletcing operatörü)
Kodum temelde bu eşdeğer oldu: will olarak, bu çalıştırmak ve uyarılar veya uyumsuz tip hatasız derlenir
int? x=10;
string s = "foo" + x ?? 0 + "bar";
Şaşırtıcı ki bu:
int? x=10;
string s = "foo" + x ?? "0" + "bar";
Ve sonra bu sonuçlanır Beklenmeyen bir tür uyumsuzluk hatası:
int? x=10;
string s = "foo" + x ?? 0 + 12;
Bu kadar basit olacak Örnek:
int? x=10;
string s = "foo" + x ?? 0;
Birisi bana bunun nasıl çalıştığını açıklayabilir mi? derler böylece her iki ifade dizelerdir Bu örnekte
int? x = 10;
string s = ("foo" + x) ?? (0 + "bar");
ama istediğini yapmaz:
İlgili bir konu: http://stackoverflow.com/questions/3218140/null-coalescing-operator-and-lambda-expression/3218268#3218268 –
Ve işte benim yanıtımı kızdırmayan bir bağlantıdır ... http://stackoverflow.com/questions/3218140/null-coalescing-operator-and-lambda-expression – ChaosPandion