Главная страница
    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.46 MB
Время: 0.029 c
3-1087038563
Swimmer
2004-06-12 15:09
2004.07.11
Firebird


1-1088228074
dreams
2004-06-26 09:34
2004.07.11
Проблема с юниктом HSAdvApi , где его взять ?


14-1088009043
Viktor
2004-06-23 20:44
2004.07.11
Ошибка при запуске


1-1088294261
Yegorchic
2004-06-27 03:57
2004.07.11
Поиск текста в окне IE


3-1087199777
denis24
2004-06-14 11:56
2004.07.11
редактирование рез-татов запроса в гриде





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский