C # - это не C ++ - не ожидайте, что в C # будут работать те же вещи, которые работали в C ++.Это другой язык, с некоторым вдохновением в синтаксисе.
В C ++ доступ к массиву - это краткий путь для манипулирования указателями.Вот почему следующее одинаково:
test[5]
*(test+5)
*(5+test)
5[test]
Однако в C # это не так.5[test]
не является допустимым C #, поскольку в System.Int32 отсутствует свойство индексатора.
В C # вам очень редко приходится иметь дело с указателями.Вам лучше просто обращаться с ним как с массивом int напрямую:
int[] test = new int[10];
Если вы действительно хотите по какой-то причине иметь дело с математикой указателя, вам нужно пометить свой метод unsafe и поместите его в фиксированный контекст .Это не типично для C # и, вероятно, действительно является чем-то совершенно ненужным.
Если вы действительно хотите выполнить эту работу, самое близкое, что вы можете сделать в C #, будет:
using System;
class Program
{
unsafe static int Main(string[] args)
{
fixed (int* test = new int[10])
{
for (int i = 0; i < 10; i++)
test[i] = i * 10;
Console.WriteLine(test[5]); // 50
Console.WriteLine(*(5+test)); // Works with this syntax
}
return (int)Console.ReadKey().Key;
}
}
(Опять же, это действительно странный C # - я бы не рекомендовал ...)