2010-12-02 5 views
0

54 ne devrait pas être important.ArrayList.GetRange (0,54) .ToString() renvoie «System.Collections.ArrayList + Range»

Le arrayList est rempli au cours d'une ArrayList.AddRange(return_value)byte[] return_value = (byte[])this.in_buffer.ToArray(typeof(byte)) (et in_buffer est de type ArrayList également rempli de AddRange(byte[] bytes))

Pourquoi? Je n'ai pas écrit la partie typeof(byte). Je prévois d'aller lire à ce sujet maintenant. Dois-je utiliser quelque chose de similaire? En écrivant ceci, cette possibilité m'est venue à l'esprit.

+0

À quoi vous attendiez-vous lorsque vous avez utilisé .ToString()? L'implémentation par défaut de .ToString() affiche le type de l'objet. Dans ce cas, il affiche le fait que l'objet est de type ArrayList.Range. –

+2

En outre, sauf si vous êtes bloqué avec .NET 1.1, vous ne devriez pas utiliser ArrayList du tout. Utilisez 'List ' si vous avez besoin d'une collection pouvant contenir n'importe quel objet, sinon utilisez 'List ' où 'T' est le type de l'objet qui sera dans la collection. –

+1

Votre exemple serait * beaucoup * plus facile à suivre si vous deviez l'écrire comme un bloc de code. –

Répondre

0

ArrayList.GetRange est implémenté en retournant une sous-classe de ArrayList appelée Range, qui est en fait imbriquée dans ArrayList, c'est tout. ToString ne fait que montrer le nom de ce type.

Qu'attendiez-vous?

+0

Chaîne concaténée des octets à l'intérieur de arrayList; Ai-je besoin de le faire manuellement? – paIncrease

+0

@ Rancur3p1c: Eh bien, vous pouvez utiliser String.Join ... –

1

La méthode ToString sur System.Object renvoie le nom du type par défaut, de sorte que les valeurs du tableau ne sont pas renvoyées, ce que je suppose que vous recherchiez.

0

System.Collections.ArrayList contient une classe imbriquée appelée Range, dérivée de ArrayList. C'est le type qui est retourné par GetRange, mais il est exposé en tant que ArrayList. La partie + de la chaîne renvoyée indique un type imbriqué.