beton durumda ilave edelim: Yani bazı sözdizimi sihirli i
DÜZENLEME kullanabilirsiniz yoktur Bu durumda operatör (en azından işlev çağrısının dışında), çünkü Foo
dönüş değeri yoktur. ?:
operatörünün bir şeyleri değerlendirmesi ve başka bir şeye bir şey atanması gerekir.
yinelenen işlev çağrısı kurtulmak istiyorum Başka bir seçenek parametreleri için bir dizi veya liste kullanmaktır:
var parameters = new List<object> { a, b };
if (x == 42)
parameters.Add(c);
Foo("yo", parameters);
Ve gerçekten orada ?:
almak istiyorsa, bu da işe yarayacağını: XDocument
/XElement
yapıcı çağrıları hakkında, daha ayrıntılı soru için
Foo("yo", x == 42 ? new object[] { a, b, c } : new object[] { a, b });
, sen Add
aramaları ziyade yapıcı aramaların tek bir uzun dizi kullanmak isteyebilirsiniz. Sonra onları şartlı yapabilirsiniz. Son bir
XDocument xml = new XDocument();
XElement root = new XElement("Root");
xml.Add(root);
root.Add(new XElement("Item1"));
root.Add(new XElement("Item2"));
if (x == 42)
root.Add(new XElement("Item2.5"));
root.Add(new XElement("Item3"));
root.Add(new XElement("Item4"));
Aslında: Böyle bir şey olmazdı Add
görüşmelerini kullanma
XElement elementPrecedingOptionalElement = new XElement(...);
var xml = new XDocument(....,
new XElement(...),
new XElement(...),
elementPrecedingOptionalElement,
new XElement(...),
new XElement(...)
);
if (x == 42)
elementPrecedingOptionalElement.AddAfterSelf(new XElement(...));
: olduğu gibi, ben de böyle bir şey yaparak soruyorsun ne mümkün olmalıdır düşünüyorum o (hangi soru ihtiyaçlarına en yakın olsa eğer o':
var xml = new XDocument(....,
new XElement(...),
new XElement(...),
new XElement(...),
x == 42
? new XElement(...)
: null,
new XElement(...),
new XElement(...)
);
+1 <> 'seçenek listesi' için: sizin için ne soruyorsun çok daha yakın olduğunu versiyon iş gördüğü görülen bu gibi olurdu O kadar "dağınık" olacak İD). –
Bunun benim için neden çalışmadığını görmek için düzenlemeye bakın. PS Nasıl yapılacağını biliyorum, özellikle kolayca ve açık bir şekilde çalışıp çalışamayacağımı anlamaya çalışıyorum - özellikle de amacı netleştirmek istiyorum. Kullanmak için wnat yok mu?:, Sadece benim ilk denemem (hemen vazgeçtim) – pm100
@ pm100 tamam güncellenmiş cevap –