Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

C# Problem kod konvertovanja tipa, fali kastovanje.... Sta uraditi?

[es] :: .NET :: C# Problem kod konvertovanja tipa, fali kastovanje.... Sta uraditi?

[ Pregleda: 2493 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

LSDCracker
Obrisan Profil

Član broj: 161168
Poruke: 62



Profil

icon C# Problem kod konvertovanja tipa, fali kastovanje.... Sta uraditi?19.08.2008. u 20:28 - pre 191 meseci
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Subclassing
{
class Program
{
static void Main(string[] args)
{
Rottweiler butch = new Rottweiler("Butch") as Dog;
Spaniel mac = new Spaniel("Mac", "yips") as Dog;
butch.Bark();
mac.Bark();
butch.DoYourThing();
mac.DoYourThing();
}
}
class Dog
{
protected string _name;
protected string _sound;
public Dog(string name)
{
_name = name;
_sound = "barks";
}
public Dog(string name, string sound)
{
_name = name;
_sound = sound;
}
public void Bark()
{
Console.WriteLine("{0} {1} at you", _name, _sound);
}
public virtual void DoYourThing()
{
}
}
class Rottweiler : Dog
{
public Rottweiler(string name) : base(name) { }
public Rottweiler(string name, string sound) : base(name, sound) { }
public override void DoYourThing()
{
Console.WriteLine("{0} snarls at you, in a very menacing fashion!", _name);
}
}
class Spaniel : Dog
{
public Spaniel(string name) : base(name) { }
public Spaniel(string name, string sound) : base(name, sound) { }
public override void DoYourThing()
{
Console.WriteLine("{0} drools all over you, then licks you into submission!", name);
}
}
}



Prijavljuje mi problem, kaze da li vam nedostaje kastovanje...
Error 1 Cannot implicitly convert type 'Subclassing.Dog' to 'Subclassing.Rottweiler'. An explicit conversion exists (are you missing a cast?) D:\Documents and Settings\LIVADA\Local Settings\Application Data\Temporary Projects\ConsoleApplication1\Program.cs 12 32 ConsoleApplication1
Neko objasnjenje?
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: C# Problem kod konvertovanja tipa, fali kastovanje.... Sta uraditi?19.08.2008. u 21:28 - pre 191 meseci
Code:

Rottweiler butch = new Rottweiler("Butch") as Dog;
Spaniel mac = new Spaniel("Mac", "yips") as Dog;


Ovo ne moze ovako, polimorfizam ne funkcionise u tom smeru, implicitni cast ide ka nasledjenoj klasi (as Dog ti nije potrebno):

Code:

Dog butch = new Rottweiler("Butch");
Doc mac = new Spaniel("Mac", "yips");

Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

LSDCracker
Obrisan Profil

Član broj: 161168
Poruke: 62



Profil

icon Re: C# Problem kod konvertovanja tipa, fali kastovanje.... Sta uraditi?20.08.2008. u 01:17 - pre 191 meseci
E hvala ti, ma ovo mi kod iz tuta jednog i sad ono ne kapiram zasto ne radi, posto nikako ne kapiram sta zapravo sta radi, a najbolje ucim kad pokrenem program i onda eksperementisem, medjutim nije hteo da radi...
Sad ima jos jedan problem, pomalo nelogican...
Error 1 The name 'name' does not exist in the current context D:\Documents and Settings\LIVADA\Local Settings\Application Data\Temporary Projects\ConsoleApplication1\Program.cs 59 77 ConsoleApplication1

Code:
 class Spaniel : Dog
    {
        public Spaniel(string name) : base(name) { }
        public Spaniel(string name, string sound) : base(name, sound) { }
        public override void DoYourThing()
        {
            Console.WriteLine(
                "{0} drools all over you, then licks you into submission!", name);
        }
    }


Sad kao on ne postoji il sta vec...
Probao sam da promenim da bude kao i u prethodnoj klasi sa _, ali ne radi....

E sta zapravo znaci ta _ (donja crta pored promenjive)??
Prvi put vidim upotrebu nje u programskom kodu, pa sam pomalo zbunjen, a verovatno ima veliku primenu...
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: C# Problem kod konvertovanja tipa, fali kastovanje.... Sta uraditi?20.08.2008. u 08:42 - pre 191 meseci
Nema nikakvu primenu, samo je validan karakter za identifikator pa moze da se koristi u istom, ne vuce sa sobom nikakvo posebno procesiranje.

Greska tu javlja zato sto je u baznoj klasi deklarisan _name a ti u Spaniel.DoYourThing koristis name, koji naravno ne postoji. Treba da promenis samo tu u _name, slicno kao sto je u Rtowailer klasi.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

LSDCracker
Obrisan Profil

Član broj: 161168
Poruke: 62



Profil

icon Re: C# Problem kod konvertovanja tipa, fali kastovanje.... Sta uraditi?20.08.2008. u 17:07 - pre 190 meseci
Pa ja sam to i pokusao i nije radilo, sad nekako iznenada proradi.
Hvala puno, mislio sam da ova donja crta ima neko znacenje al nista zapravo ne radi prosto ime promenjive.
 
Odgovor na temu

[es] :: .NET :: C# Problem kod konvertovanja tipa, fali kastovanje.... Sta uraditi?

[ Pregleda: 2493 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.