Главная страница
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.03 c
8-1082816087
Batoon
2004-04-24 18:14
2004.07.11
(fft.dll)


1-1088584282
Николай
2004-06-30 12:31
2004.07.11
Очень простой вопрос: подскажите код символа конца файла


3-1087119568
Axelrodm
2004-06-13 13:39
2004.07.11
Чтение курсора (c BLOB )из Хранимой процедуры ORACLE в BDE


1-1087996349
Heretic
2004-06-23 17:12
2004.07.11
Подчиненные окна


14-1087949054
jack128
2004-06-23 04:04
2004.07.11
Как часто вы работаете по ночам?