Permalänk
Medlem

C# fråga

Första inlägget från en som precis börjat ta de första stapplande stegen i att lära sig programmera. Jag har skrivit ihop ett program och jag får ett fel vid kompileringen som jag skulle ha vilja ha lite hjälp med att förstå och hur man åtgärdar det. Jag har klippt från koden som förhoppningsvis ger lite sammanhang och det är den sista raden "double varupris = cart[i];" som ger felet " Error CS0029 Cannot implicitly convert type 'ConsoleApp.Product' to 'double' som jag inte fattar

****************************************************

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

namespace ConsoleApp

{
public class Product
{
public string namn;
public double pris;
public int antal;
public bool skrymmande;
}

class Program
{
static void Main(string[] args)

{
Product[] cart =
{
new Product {namn = "x", pris = 5, antal = 1, skrymmande = false},
new Product {namn = "Y", pris = 25, antal =7, skrymmande = true}
};
double grandtotal = 0;
double extrafrakt = 0;
int i = 0;
double varupris = cart[i];

Permalänk
Medlem

double varupris = cart[i];

ska vara

double varupris = cart[i].pris;

Annars försöker du omvandla objektet till en double och eftersom du inte har någon cast-operator så går det inte och det kastas exception.

Permalänk
Medlem

@Headman: stort tack för hjälpen!! Jag letade runt lite men hittade ingen dokumentation om Headmans förslag,skulle uppskatta tips var man läsa mer om detta så att man fattar till 100%

Permalänk
Medlem

en class kan du se som ett object, det du försöker göra är att ge ett värde av typen DOUBLE, ett värde av typen Product.
En klass innehåller massa olika methods etc och det du vill göra är att ge värdet pris, värdet av varupris, vilket blir som Headman gjort:

double varupris = cart[i].pris;

När du gör:
double varupris = cart[i]; // Här försöker du skicka hela objektet av en Produkt till double varupris, vilket är 2 olika typer.

Då du är ny så kan du tänka så här, en typ kan du bara ge ett värde av en likadan typ.
(Int till en Int, Float till en Float, String till en String)

(Detta är inte helt korrekt då du kan casta en typ till en annan, men när du är ny så kan det hjälpa att Bara ha det tänket i början tills du kommer in på typecasting)

Visa signatur

C#/MonoGame Fanatiker.
Pixel Artist & Game Developer

Permalänk
Medlem

Jag skulle rekommendera dig att inte skriva något på svenska, inte ens Object/data types (variables) på svenska!

Lika bra att göra rätt ifrån början, dokumentation och kod på Engelska Annars blir det lätt som du har, vissa saker på svenska andra på engelska.