Questo funziona bene:Eccezione imprevista dal costruttore XDocument
XDocument xdoc = new XDocument(
new XDeclaration("1.1", "UTF-8", "yes"),
new XProcessingInstruction("foo", "bar"),
new XElement("test"));
Tuttavia se cambio a passare la "matrice params" esplicitamente come un array:
object[] content = new object[] {
new XDeclaration("1.1", "UTF-8", "yes"),
new XProcessingInstruction("foo", "bar"),
new XElement("test")
};
xdoc = new XDocument(content);
non riesce con:
System.ArgumentException: non è possibile aggiungere caratteri non spazi bianchi al contenuto.
Questi due esempi non sono esattamente equivalenti? Cosa sta succedendo qui?
vedo; Non mi rendevo conto che stavo chiamando diversi sovraccarichi. Sembra un po 'sfortunato che 'XDocument (object [])' accetti tutti i tipi di oggetti ma per qualche ragione esclude XDeclaration. –
Mi chiedo se i progettisti linguistici possano cambiare l'implementazione degli argomenti 'params' ora se ne hanno la possibilità. Questo è un trabocchetto non ovvio che verrebbe evitato se fosse indicato esplicitamente che stai passando vararg sul sito di chiamata in qualche modo.ll –