Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.11;
Скачать: CL | DM;

Вниз

Статические массивы в 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.039 c
4-1085423298
ZedeS
2004-05-24 22:28
2004.07.11
запуск программы с параметром


6-1084205797
Alexey8000
2004-05-10 20:16
2004.07.11
Создание простешего сокетного сервера! Помомгите начинающему!


3-1086953301
Alecs
2004-06-11 15:28
2004.07.11
Как найти удалённые записи в БД InterBase?


14-1087557376
Andryk
2004-06-18 15:16
2004.07.11
А вы про Буша Читали?


1-1087753166
Павел
2004-06-20 21:39
2004.07.11
индикатор Db как у Винампа