C# небезопасный буфер

281
28 марта 2017, 10:15

На https://msdn.microsoft.com/ru-ru/library/zycewsya.aspx есть пример. Пример запускается, работает, но ни чего не выводит. Попробовал добавить в пример Console.WriteLine - не получилось:

  unsafe struct MyBuffer  
  {  
      public fixed char fixedBuffer[10];  
  }  
  unsafe class MyClass  
  {  
      public MyBuffer myBuffer = default(MyBuffer);  
  }  

  static void Main()  
  {  
      MyClass myC = new MyClass();  
      unsafe  
      {  
          fixed (char* charPtr = myC.myBuffer.fixedBuffer)  
          {  
             *charPtr = 'A';  
          }  
          Console.WriteLine(new string(myC.myBuffer.fixedBuffer)); // ошибка  
      }  
      Console.ReadLine();  
  }

Ругается:

Невозможно использовать буферы фиксированного размера в нефиксированных выражениях. Попробуйте использовать оператор fixed.

Вопрос - как можно вывести "A"?

Answer 1

Надо

Console.WriteLine(new string(myC.myBuffer.fixedBuffer)); // ошибка  

заменить на

MyBuffer tmp = myC.myBuffer;
Console.WriteLine(new string(tmp.fixedBuffer));

Теперь всё работает.

READ ALSO
interface cannot contain fields Что это значит?

interface cannot contain fields Что это значит?

Где здесь ошибка? Я не могу понять

326
Отложенное получение результата задачи

Отложенное получение результата задачи

С появлением async await все стало красивоВозьмем, например, такой кусочек кода

240
Элементы в строке

Элементы в строке

Как можно узнать что за элемент находится в 5-ом месте в строке с конца считая ?

218
Проблема с компонентом textBox

Проблема с компонентом textBox

Делаю простой файловый менеджерПапки/файлы отображает компонент webBrowser

266