J'ai trouvé ce code
Stream foo() { ... return new MemoryStream(new[] { a, b }); }
4 Réponses :
Je peux deviner ce qu'il fait p> blockQuote>
Vous avez raison, c'est la même chose que
nouvel octet [] {A, B} code> p>
Je ne trouve pas d'explication pourquoi la définition de type
octet [] code> peut être omise p> blockQuote>
La raison pour laquelle il peut être omis est que
a code> et
b code> est de type
octet code>. Le compilateur est suffisamment intelligent pour déterminer que vous vouliez créer un tableau de
octet code> S. Il ne vous demande donc pas de spécifier le type explicitement. P>
Microsoft explique ce raccourci ici . L'idée est similaire à l'omission du type dans les déclarations qui utilisent
var code>, lorsque le type réel peut être déduit du contexte d'initialisation. P>
Autre que le raccourci code> lien, tout le reste a du sens pour moi.
La définition de type peut être omise car elle peut être déduite du type des objets de la liste. P>
Le compilateur C # fait beaucoup de travail analysant le code tel qu'il compile pour vérifier que ce que vous écrivez est valide et exécutera à mesure que vous avez l'intention. Vous pouvez toujours faire des erreurs, mais (espérons-le) moins que dans des langues telles que C ou C ++. P>
Vous pouvez créer un tableau saisi de type implicitement dans lequel le type de l'instance de tableau est déduit des éléments spécifiés dans l'initialisateur de réseau. Les règles relatives à toute variable saisie implicite s'appliquent également aux tableaux saisis implicitement. P> blockQuote>
pris de https://msdn.microsoft.com/en-us/ Bibliothèque / BB384090.ASPX P>
avec cela, fondamentalement, vous créez un tableau d'objets implicitement! p>
Il crée une instance
MemoryStream code> qui contient deux octets:
A code> et
B code>
Le type du tableau peut être dérivé des arguments à la fois des octets, de sorte que la matrice est un octet
[] code>. Ceci est un Array Tapé implicitement