Форум: "Потрепаться";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];
ВнизСтатические массивы в C# Найти похожие ветки
← →
tipman © (2004-06-21 14:17) [0]Как в C# осуществить такое:
type b=record
.......
.......
a:array [0..99] of char
.......
.......
end;
т.е. создать тип (структуру) содержащую сам массив а не указатель.
← →
tipman © (2004-06-21 16:25) [1]...или ещё проще, выделить 100 байт в структуре
← →
Delirium © (2004-06-21 16:33) [2]
char[] a = new char[100];
← →
Suntechnic © (2004-06-21 18:54) [3]Delirium © (21.06.04 16:33) [2]
char[] a = new char[100];
Так не пойдёт. Массив сам по себе является ссылочным типом.
>tipman ©
Боюсь что никак. Можно вопрос? Зачем это надо?
← →
akvilon © (2004-06-21 20:22) [4]например, если есть dll, и она в это самое место в структуре пишет какую-нибудь строку максимум в 100 char, а также заполняет другие поля структуры. То есть указатель тут нельзя подставлять точно, типа char[] a = new char[100]; не прокатит
← →
tipman © (2004-06-22 10:39) [5]akvilon © (21.06.04 20:22) [4]
...вот именно такая проблема у меня и встала
← →
Serginio666 (2004-06-22 14:28) [6]
struct StaticArray
{
[FieldOffset(0)]
byte firstByte; // в Net char 2 byte
[FieldOffset(99)]
byte lastByte;
}
доступ к массиву череp унчейв или через
StaticArray[] SA= new StaticArray[1];
int ByteCount=Buffer.ByteLength(SA);
byte[] temp= new byte[ByteCount];
Bufer.BlockCpoy(BlockCopy(SA,0,temp,0,ByteCount);
И работаешь с массивом байтов.
Если нужно приведение к уникодному char используй Encoding
← →
Suntechnic © (2004-06-22 17:40) [7]>tipman © (22.06.04 10:39) [5]
Так бы сразу и писал.
Если речь идёт просто о строке, тогда определяешь структуру так[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)]
struct MyStruct
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=100)]
public string str;
}
Если речь идёт просто о массиве, тогда можно так[StructLayout( LayoutKind.Sequential)]
public struct MyArrayStruct
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst=100)]
public char[] array;
}
← →
Vitaly © (2004-06-22 17:46) [8]А что, в с# нет char a(100)?
← →
iZEN © (2004-06-22 19:50) [9]В Java так: char[] a = new char[] {"a", "b", "c"};
В C# похожий синтаксис для использования как поля класса, но вот использование в записях не знаю как.
← →
Serginio666 (2004-06-23 13:12) [10]Во версии 2.0 Появились статические массивы, Но работать с ними можно только в унсейве по аналогии с Serginio666 (22.06.04 14:28) [6] , возможно к релизу сделают полную поддержку.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.037 c