convertir implícitamente una lista c#

Iniciado por ismaelson, 24 Marzo 2021, 13:51 PM

0 Miembros y 1 Visitante están viendo este tema.

ismaelson

buenas estoy aprendiendo c# aqui el motivo de mi pregunta estoy haciendo un ejercicio de herencias  que trata de hacer una tienda con ciertos articulos y que se puedan comprar pero mi problema es que no consigo llamar a una lista la e intentado llamar de distintas formas pero no lo consigo siempre me dice lo mismo que necesita una conversion implicita, pero por mas que miro en la documentacion no encuentro algo parecido, dejo el codigo para que puedan echarle un ojo

necesitaria saber como hago esa conversion implicita y asi poder aprender de ello para que no me vuelva a ocurrir gracias, un saludo!


Código (csharp) [Seleccionar]
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using static ejerciciopracticotema3.Program;

namespace ejerciciopracticotema3
{
    public class Program
    {
       
        public DefinicionGeneral[] inventarioTienda;
       
        public float aPagar
        {
            get; set;
        }
        public float dinero
        {
            get; set;
        }
       
       
       

        public class Naranjas : DefinicionGeneral, IAPeso
        {
            public float precioPorKg
            {
              get; set;
            }
            public bool aPeso
            {
                get; set;
            }

           
            public void SetVarNaranjas()
            {

                precioPorKg = 0.75f;
                aPeso = true;
                SetNameId("Naranjas", precioPorKg,0.75f);

            }
            public Naranjas(float x, bool b) { precioPorKg = x; aPeso = b; }

        }

        public class Berenjenas : DefinicionGeneral, IAPeso
        {
           
           
            public float precioPorKg
            {
                get; set;
            }
            public bool aPeso
            {
                get; set;
            }

            public void SetVarBerenjenas()
            {
                precioPorKg = 0.85f;
                aPeso = true;
                SetNameId("Berenjenas", precioPorKg, 0.85f);
            }

            public Berenjenas(float x, bool b) { precioPorKg = x; aPeso = b; }

        }

        public class Pelota : DefinicionGeneral,IUnitario
        {
            public float precioPorItem
            {

                get; set;

            }
            public int cantidad
            {

                get; set;


            }
            public void SetVarPelota()
            {
                precioPorItem = 1.60f;
                cantidad = 1;
                SetNameId("Pelota", 1, 1.60f);

            }

            public Pelota(float x, int c) { precioPorItem = x; cantidad = c; }

        }

        public class Yatekomo : DefinicionGeneral, IUnitario
        {

            public float precioPorItem
            {
                get; set;
            }

            public int cantidad
            {
                get; set;
            }

            public void SetVarYatekomo()
            {
                precioPorItem = 2.20f;
                cantidad = 1;
                SetNameId("Yatekomo", 1, 2.20f);

            }
           public Yatekomo(float x, int c) { precioPorItem = x; cantidad = c; }
        }


         static void Main(string[] args)
         {
            Program p = new Program();


            //p.inventarioTienda =
            p.inventarioTienda = Inventario.InventarioTienda(); // aqui me tira el error aunque imagino que sera por algo que esta mal en la lista
           

            Console.WriteLine("Bienvenidos a tiendas paqui");
            Console.WriteLine(" ");
            Console.WriteLine("tenemos todo esto disponible en tienda: ");
            foreach(DefinicionGeneral dG in p.inventarioTienda)
            {
                Console.WriteLine( dG.name + " Tiene un precio de "+ dG.precio);
            }

            Console.WriteLine(" ");
            Console.WriteLine("Que cantidad de dinero tienes disponible? ");
            p.dinero = int.Parse(Console.ReadLine());
            Console.WriteLine("Perfecto tienes disponible para gastar: " + p.dinero + " Euros");
           
            Console.WriteLine(" ");
            Console.WriteLine("elige que Kg deseas comprar: ");

           

        }
    }
    public static class Inventario
    {


        public static List<DefinicionGeneral> inventarioDeLaTienda;



        public static List<DefinicionGeneral> InventarioTienda() // esta es la lista que tengo que llamar
        {

            return   new List<DefinicionGeneral>()
             {
                new Naranjas(0.75f, true),
                new Berenjenas(0.85f, true),
                new Pelota(1.60f, 1),
                new Yatekomo(2.20f, 1),
             };


        }


    }
   
    public abstract class DefinicionGeneral
    {

         

        public string name { get; set; } //nombre del producto

        public float iD { get; set; } // id del producto
        public float precio { get; set; }

        public virtual void SetNameId(string s, float i, float ip)
        {
           

            name = s;
            iD = i;
            precio = ip;

        }

    }
    interface IAPeso// interfaz que define si el objeto se pesa o no
    {

        public float precioPorKg
        {
            get; set;
        }
       
        public bool aPeso
        {
            get; set;
        }

    }
    interface IUnitario
    {
        public float precioPorItem
        {
            get; set;
        }

        public int cantidad
        {
            get; set;
        }
    }

   


   
   

}

K-YreX

Tu problema se puede resumir en:
Código (csharp) [Seleccionar]

int[] arrayNumeros;
List<int> listaNumeros;
arrayNumeros = listaNumeros; // Error!! Se esta asignando una List<int> a un int[]
arrayNumeros = listaNumeros.ToArray(); // OK
listaNumeros = arrayNumeros; // Error!! Se esta asignando un int[] a una List<int>
listaNumeros = arrayNumeros.ToList(); // OK
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;