Ben şu ifadelere bakıyordu:Neden string.Join (string, object []) özeldir?
onlar aynı değeri döndürecektir sanırdımstring.Join(",", new object[] { null, "StackOverflow" })
string.Join(",", new string[] { null, "StackOverflow" })
string.Join(",", new object[] { string.Empty, "StackOverflow" })
string.Join(",", new string[] { string.Empty, "StackOverflow" })
:
,StackOverflow
Ancak, ilk ifadesi aslında string.Empty
döndürür. Bu is actually defined behavior:
değerlerin birinci elemanı boş ise, katıl yöntem değerlerinde elemanları birleştirmek etmez (String, [] Nesne), fakat bunun yerine String.Empty döndürür. Bu sorun için bir dizi geçici çözüm bulunmaktadır. Aşağıdaki örnekte gösterildiği gibi, en kolay dizi dizinin ilk elemanına String.Empty değerini atamaktır.
Bu tutarsızlığın nedenini bilen var mı? favori decompiler olarak
olan ("geçici çözüm", "mesele"), ben bir hata değil, bir hedeflenen bir davranış olduğu varsayılabilir ... – Vache
@Vache No, Bu kasıtlı olarak kodlanmıştır. Bunu görmek için reflektörde açın .. –
@SriramSakthivel Evet, bunu görebiliyorum, ancak birkaç satır aşağıda bu davranışla çelişen bazı kodlar var. İlk öğenin dize temsili için bir null değeriyle ilgilenen bir "var" var. – Vache