| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > массив |
| Автор: cthutq 17.4.2006, 18:45 |
| есть СОМ объект написанный на С++ у него есть метод func(ULONG* size, BYTE* buffer); под .NET этот метод стал иметь вид void func (ref uint, ref byte); я создал массив byte[] buffer = new byte[100]; и передаю его uint size = buffer.Length; func(ref size, ref buffer[0]); но изменяется только первый байт а остольное пишется непонятно куда есть подозрение что buffer[0] возвращает копию и в функцию я передаю ссылку на локально созданный только один байт как правильно ? |
| Автор: -ser- 18.4.2006, 06:02 |
| а зачем ты указываешь func(ref size, ref buffer[0]); ? почему не func(ref size, ref buffer); |
| Автор: ivashkanet 18.4.2006, 11:21 |
| Имя массива и есть ссылка на массив А не первый элемент как в С |
| Автор: cthutq 18.4.2006, 19:39 | ||
так проблемма в том, что func(ULONG* size, BYTE* buffer); был воспринят как void func (ref uint, ref byte); а не как void func (ref uint, ref byte[]); или void func (ref uint, byte[]); в этом и косяк |
| Автор: ivashkanet 19.4.2006, 08:01 |
| А кто его знает, я в С не силен (так мелкие програмки). А нельзя COM переписать, чтоб он явно использовал массив, а не ссылку на первый элемент. |