Не работает приведение типов по индексу в массивах?
VideoArray[i] =(int)(SliderArray[s1]);
- Не работает приведение типов по индексу в массивах, выдает ошибку, что нет явного приведения типов, хотя я его указал:
Ошибка CS0266 Не удается неявно преобразовать тип "double" в "int". Существует явное преобразование (возможно, пропущено приведение типов).
Пытался и так: VideoArray[i]= Convert.ToInt32((SliderArray[s1]));
CompositionTarget[] VideoArray;
// затем
public MainWindow()
{
InitializeComponent();
CompositionTarget[] VideoArray = new CompositionTarget[MyMedia.Source.UserInfo.Length];
но при этом ошибка
CS0649 Полю "MainWindow.VideoArray" нигде не присваивается значение, поэтому оно всегда будет иметь значение по умолчанию null.
BadCats: Правильно. Первое объявление массива идёт в контексте класса MainWindow. Этот массив ничем не инициализируется, поэтому null. Второе объявление с инициализацией - в контексте конструктора MainWindow. Это два разных экземпляра массива. Полагаю вам нужно в конструкторе убрать определение типа VideoArray
CompositionTarget[] VideoArray;
// затем
public MainWindow()
{
InitializeComponent();
this.VideoArray = new CompositionTarget[MyMedia.Source.UserInfo.Length];
- кадру(элементу массива) присваиваю значение SliderArray значение другого элемента массива, который у меня хранит состояние slider,Value -текущего слайдера, но о совместимости типов я не подумал.
BadCats: У вас ошибка в другом месте кода.
Вот пример:
double[] DoubleVideoArray = new double[8];
int[] IntVideoArray = new int[8];
DoubleVideoArray[0] = 1.1;
DoubleVideoArray[1] = 1.2;
DoubleVideoArray[2] = 1.3;
DoubleVideoArray[3] = 1.4;
DoubleVideoArray[4] = 1.5;
DoubleVideoArray[5] = 1.6;
DoubleVideoArray[6] = 1.7;
DoubleVideoArray[7] = 1.8;
for (int i = 0; i < 8; i++)
{
IntVideoArray[i] = (int)(DoubleVideoArray[i]);
}
Никакой ошибки, код корректно отрабатывает и IntVideoArray содержит 1 1 1 1 1 1 1 1, т.к. округление идет не по правилам математики, а берется целая часть числа. Если вам нужно округление по правилам математики, то