Как работает небезопасный код? Можно ли смешивать управляемые ресурсы в фиксированном коде? - PullRequest
0 голосов
/ 17 апреля 2020

У меня вопрос о unsafe code функциях.

Как я понимаю, мне нужно использовать его, потому что я использую pointers. Я не совсем уверен, как это работает. Поэтому я попробую с некоторыми вопросительными знаками посмотреть, смогу ли я разобраться в этом лучше.

  1. Правда ли, что небезопасный код устраняет издержки для переменных fixed. Другими словами. Только те, которые объявлены в фактическом фиксированном утверждении, как это:
    fixed (int* ptr = arraynums)

  2. Глядя на мой пример кода ниже. У меня будут переменные, размер которых изменяется В СХЕМЕ вышеупомянутого оператора fixed. Тогда эти переменные будут managed code, которые будут иметь разные размеры на каждой итерации 1000 итераций.

Мой вопрос здесь. Можно ли смешивать управляемые переменные / ресурсы, как в моем примере, которые принимают разные размеры и .Counts внутри for (int i = 0; i < 1000; i++)?

    unsafe void testing()
    {
        int[] arraynums = new int[100000];
        fixed (int* ptr = arraynums)
        {
            for (int i = 0; i < 1000; i++)
            {
                int[] array1 = new int[58745]; //Will take different number of elements each time

                List<String> list1 = new List<String>();
                list1.Add(""); //Will add different number of elements each time

                StreamWriter streamWriter1; //Write to different files
            }
        }
    }
...