Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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.03 c
6-1084397457
Renald
2004-05-13 01:30
2004.07.11
открыт ли 21 80 порт на удал...


3-1087288374
Jaxtor
2004-06-15 12:32
2004.07.11
Триггер не выдает сообщения оь ошибке


1-1088005401
Ivolg
2004-06-23 19:43
2004.07.11
Снимок


4-1085563007
diMAN
2004-05-26 13:16
2004.07.11
Имя пользователя с правами которого запущена программа


3-1086856718
JPG
2004-06-10 12:38
2004.07.11
Запись рисунка jpg в Access базу





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский