При возврате массива с плавающей точкой я получаю ошибку - PullRequest
2 голосов
/ 30 марта 2019

Когда я пытаюсь вернуть массив чисел с плавающей точкой, я получаю эту ошибку:

Не удается неявно преобразовать тип 'float []' в 'float'

Я делаю 2D движок игры на C #, используя OpenTK, и я работаю над классом вершин, но я продолжаю получать ошибки, и я застрял.

Я пробовал это:

return data[vertices.Length * Size];

код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenTK;

namespace RacerEngine
{
    public class Vertex
    {
        private const int Size = 2;

        private Vector2 position;
        public Vector2 Position
        {
            get
            {
                return position;
            }
            set
            {
                position = value;
            }
        }

        public Vertex(Vector2 position)
        {
            this.position = position;
        }

        public static float Process(Vertex[] vertices)
        {
            float[] data = new float[vertices.Length * Size];

            for(int i = 0; i < vertices.Length; i++)
            {
                data[i] = vertices[i].position.X;
                data[i + 1] = vertices[i].position.Y;
            }

            return data;
        }
    }
}

Ответы [ 2 ]

4 голосов
/ 30 марта 2019

Ваш метод Process определен как возвращающий float, но ваш оператор return возвращает float [] из него.В зависимости от того, что вам нужно, измените сигнатуру вашего метода на

public static float[] Process(Vertex[] vertices)

или верните один float из метода.

1 голос
/ 30 марта 2019

C # является типобезопасным языком, означает, что вы не можете преобразовать значение с плавающей точкой в ​​массив с плавающей точкой, или вы не можете преобразовать массив с плавающей точкой в ​​значение с плавающей точкой.В вашем коде вы пытаетесь преобразовать массив с плавающей точкой в ​​значение с плавающей точкой, поэтому вы должны изменить свой код в определении метода на:

public static float[] Process(Vertex[] vertices)
...