Új hozzászólás Aktív témák
-
Lakers
tag
Sziasztok!
Most ismerkedem először az Osztály Orientált nyelvvel, a C#-al. (alap C tudással). Egy ingyenes e-book segítségével és nehezen értek meg egy-két részt - vagy számomra nem átlátható -, ehhez kérnék magyarázatot.
Példa kód:using System;
class Dog
{
private string name;
private int age;
public Dog(string n, int a)
{
this.name=n;
this.age=a;
}
}
class Program
{
static public void Main()
{
Dog d=new Dog("Rex", 2);
}
}1. kérdés, itt hol van a konstruktor és mit csinál itt? Annyit tudok róla, hogy egy speiciális metódus ami példányosítás során jön létre... De jó lett volna egy magyarázat a kódban, hogy mit hol hogyan működik.
2. kérdés: public Dog(string n, int a) lenne az objektum?
3. kérdés a this. metódus itt mit csinál? Annyi magyarázat volt, hogy egy konstruktorból hívhatunk egy másikat...
Nagy segítség lenne, ha ezt valaki ezen a példán eltudná nekem magyarázni. -
Lakers
tag
sziasztok!
Ismét kód értelmezésben kérem a segítségeteket
ez a Pass osztály:using System;
namespace Parameters
{
class Pass
{
public static void Value(int param)
{
param = 42;
}
public static void Reference(WrappedInt param)
{
param.Number = 42;
}
}
}WrappedInt osztály:
namespace Parameters
{
class WrappedInt
{
public int Number;
}
}Ez pedig a Main metódus tartalma:
WrappedInt wi = new WrappedInt();
Console.WriteLine(wi.Number);
Pass.Reference(wi);
Console.WriteLine(wi.Number);itt a Reference függvény azt csinálja, hogy a WrappedInt osztályból meghívja a példányt, az a példány WrappedInt osztályban 0, és ugye a Reference metódus meghívás után a példány(Number) értéke 42 lesz.
Kérdésem:
1. public static void Reference(WrappedInt param) miért param van itt? és miért nem number? (mert az a Number az az osztály mezője?)
2. a Reference metódusban a param.Number=42 utasítás mit csinál? a Number 0 értékéhez hozzáadta a param 42 értéket? (lehet ennél a kérdésnél, még tovább kell lapoznom a könyvet -
Lakers
tag
válasz Lortech #1003 üzenetére
Köszi!
Igen, könyvből van , a Value-t azért nem írtam, mert azt valahogy felfogtam.
De átfutottam ezen a paraméter másoláson. Az lenne a kérdésem, hogy amikor ilyenkor a Value metódus megkapott paramétert, ugye lemásolja, és azzal dolgozik, és az eredetit nem másolja (mert ugye itt az értéket kapja), de akkor a másolattal mi történik? az valahol benne a van memóriában? (erre nem tért ki a könyv), hogy akkor hol a másolat? és azzal később lehet valamit kezdeni?
az hogy a Number a WrappedInt egyetlen mezője ez oké, meg hogy publikus , de az hogy példányszintű, az azt jelenti, hogy egyben ez az objektum "változója" (nem tudom, milyen szót kell ide használni).
-
Lakers
tag
válasz Lortech #1005 üzenetére
Az, hogy példányszintű, azt jelenti, hogy az objektum egy példányához tartozik,
Most elgondolkodtam, én úgy vettem le ebből az OO-ból, hogy az objektum és a példány ugyanaz. Osztálynak van objektuma, vagy másnéven példánya (lehet valami felett átsíklottam). Mi a különbség a példány és objektum között?
-
Lakers
tag
Sziasztok.
public C(int f): this(f,10.0) { ... } értelmezésével van gondom
class A
{
private int h;
protected double g;
public A() { ... }
public A(int x) { ... }
}
class B:A
{
protected string s;
public B() { ... }
public B(int a) { ... }
}
class C:B
{
public bool l;
public C(int f, int d) { ... }
public C(int f):this(f,10.0) { ... }
}Amelnyek a futása során ezeket a konstruktorokat hajtja végre.
1. class A -> A()
2. class B -> B()
3. class C -> C(30,10.0)
4. class C -> C(30)És én ezt olvastam, hogy: Ugyanahhoz az osztályhoz több, paraméterezésben különböző konstruktor is készülhet. Ekkor lehetőség van egyik konstruktorból valamely másik meghívására. A meghívásnak speciális szintaktikája van. A hívó konstruktor formális paraméterlistája mögé, a konstruktortörzs előtt kell egy kettőspont mögött feltüntetni.Amennyiben valamely másik saját osztálybeli konstruktort kell meghívni, akkor a használandó kulcsszó a this
Ekkor a this-nek nem azt kéne csinálnia, hogy meghívja a public C(int f, int d) { ... } konstruktort, mert végül is két paramétre van.
De én valamit félre értelmeztem, segítsetek korigálni, hogy akkor az a this.
Habár most ahogy kezdem visszaolvasni... A public C(int f): this(f,10.0) { ... } meghívja a public C(int f, int d) { ... } konstruktort amelyben már meg van a 30,10.0 érték, és onnan public C(int f): this(f,10.0) { ... } "lemásolja", az első értéket, az az a 30-ast?
Másik kérdésem, ezt gyakran alkalmazzák?
[ Szerkesztve ]
-
Lakers
tag
Sziasztok!
A kódom egy részletét látjátok lent. A kérdésem, az hogy a public Tyuk osztálynak az abstract Baromfi osztály az őse, de az abstract Baromfi osztálynak az abstract Allat osztály az őse.
Ebben az esetben a fordító hogy a az abstract double Ado property nem származhat az Allat osztályból:
Error 1 'proba.Tyuk' does not implement inherited abstract member 'proba.Allat.Ado.get'Mit rontottam el?
abstract class Allat
{
public static int AdoAlap;
private int suly;
public abstract void Hangoskodik();
public abstract double Ado {get;}
public int Suly
{
get { return this.suly; }
set { this.suly = value; }
}
}
class Sertes:Allat
{
public uint MalacSzam;
public override void Hangoskodik()
{
Console.WriteLine("röf-röf");
}
public override double Ado
{
get { return AdoAlap*2*Suly/5000; }
}
}
abstract class Baromfi:Allat
{
public int RepulesiMagassag;
public void Hizlal (int deka)
{
suly+=deka;
if (this.suly>200)
suly=200;
}
}
class Tyuk:Baromfi
{
public override void Hangoskodik()
{
Console.WriteLine("kot-kot");
}
public void Kapirgal()
{
Console.WriteLine("kapirgálok");
}
public override double Ado
{
get { return AdoAlap*2* Suly/1000; }
}
} -
Lakers
tag
válasz Lortech #1063 üzenetére
köszi, hogy megneztéd neked is -Zeratul-
igen, félre írtam, és köszönöm, hogy felhívtad a figyelmet a kis és nagy betűre, na meg hogy a property-re hivatkozik és hozzá a magyarázatot, ez hasznos volt
Megírtam újra a kódot, és így jó... nem értem, hogy az előbb miért panaszkodott...
-
Lakers
tag
Lenne egy kérdésem a Visual Studio 2008-al kapcsolatban.
Létrehoztam egy project fájlt, dolgozok benne, elmentem a program.cs-t és az osztaly.cs-t
Azt látom, hogy van külön mód, hogy a program.cs-t vagy az osztaly.cs-t más néven elmentsem, és így az eredetit ne írja felül.Project fájlnál is van erre lehetőség valahol a VS2008-ban? (vagy bármilyen más megoldás)
Mert én szeretném az egész project-et elmenteni úgy, hogy ne írja felül az előzőleg elmentettet... Mert nem akarok emiatt új projektet létrehozni és copy/pastelni.
-
Lakers
tag
Sziasztok!
Kiírásnál estem gondolkodba, elkezdtem probálgatni.
Itt van néhány kódrészlet:abstract class Allat
{
private int suly;
public static int AdoAlap; // megosztott: minden egyes példány ugyanazt látja
public abstract void Hangoskodik();
public abstract double Ado { get; }
public int Suly
{
get { return this.suly; }
protected set { this.suly = value; }
}
public virtual void Hizlal(int deka)
{
Suly += deka;
if (this.Suly > 200)
Suly = 200;
}
} class Sertes:Allat {
public uint MalacSzam;
public override void Hangoskodik()
{
Console.WriteLine("röf-röf");
}
public override double Ado
{
get { return AdoAlap * 2 * Suly / 5000; }
}
public override void Hizlal(int deka)
{
Suly+=deka;
} }és még a főprogramban:
Sertes s = new Sertes();
s.MalacSzam = 4;
s.Hizlal(25000);
for (int i = 0; i < 5; i++)
{
udvar.Add(s);
}
...
Sertes disznocska = at as Sertes; //Ha at változóban Sertes példány volt
if (disznocska !=null)
{
Console.WriteLine("Súly: {0} Adó: {1} Malac Száma: {2}",
disznocska.Suly,
disznocska.Ado,
disznocska.MalacSzam);
}
...Ez ideig rendben van. A MalacSzam (ami sorszám lenne), és a Sulyt is (hízlal metóduson keresztül) mindegyiknél ugyanaz.
Viszont elkezdtem próbálgatni, és más kis rész feladatotak kitalálni rá:
s.Hizlal(25000);
for (int i = 0; i < 5; i++)
{
udvar.Add(s);
s.MalacSzam += 1;
}
Akkor a súlya 125000 lesz ez okés és. De a MalacSzam mindenütt 5 lesz... Ez miért következett be?
Mert én úgy akartam, hogy a MalacSzam mint sorszam, kiíratásnál 1,2,3,4 legyen.
Ezt hogyan lehet megvalósítani?
(lehet a C után az objektum orientált gondolkodásom még nem az igazi, vagy csak pusztán amatőr hibát vétek) -
Lakers
tag
Sziasztok!
A kérdésem az lenne, hogy az ASP.NET-es kérdések is jöhetnek ide?
-
Lakers
tag
Hello!
Ha létrehozok egy új projektet, de egy régiből másolom el a kódot, csak hogy lássam a régihez képest, hogy mennyit fejlődött... Akkor a másolás során valahogy a namespace meg minden egymás is másolodik és csak írja írja problémákat, hiába javítgatom őket...
Hogyan lehet ezt megoldani? Hogy új projektben folytatok egy régit? VS2010
-
Lakers
tag
Ezt miért írja ki? Távoli szerveren lévő visual studio 2008-ban primán lefordul a kód. De a saját gépemen lévő Visual Studio 2010 már nem hajlandó, csak írkálja az errorokat, ugyanazt a weblapot, kódot...
Error 1 It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS. C:\Users\tucutuc\Downloads\ITFactoryIIweb1\ITFactoryIIweb1\web.config 52
-
Lakers
tag
Újabb probléma... ez inkább Visual Studio 2010 használati probléma lehet... (az ultimate verziót raktam fel, ami egy SQL 2008-t is feltett).
1. De... Az alábbi kóddal szeretnék létrehozni táblát Asp.Netben, ha a server explorerben az adatbázisra jobb klikkel menü / New Querry, ott feljön egy ablak és a már létrehozott abalakokat mutatja... holott a tutorial szerint oda kéne az alábbi sorokat bemásolni (ott VS 2008-van). Ezeket az sql parancsokat hogyan tudom használni? Hova, hogyan másoljam be a VS-be hogy nah itt a táblát kissrác
CREATE TABLE [dbo].[Person](
[PersonID] [int] IDENTITY(1,1) NOT NULL,
[FirstName] [varchar](30) NULL,
[LastName] [varchar](30) NULL,
[Email] [varchar](150) NULL
) ON [PRIMARY]
Na ezt hogy tehetem meg?2. App_Data mappához hozzáadok egy új SQL adatbázist. Ekkor a server explorerben létrehozok egy táblát, ebben az excel nézetben..., (habár itt is szeretném tudni, hogy hogyan lehetne a fenti sorokkal), de hiába csináltam meg manuálisan ezzel a módszerrel, a class view-ben nézve, a táblának nem hozott létre osztályt... (Person táblának kellene lennie person.cs fájl - osztály). Ezt hogyan lehet elérni
3. Lehet hogy külön le kellene töltenem az SQL Express-t és úgy ott külön adatbázist létrehozni? A Microsoftos Webinstaller, és a gépen is a sima Microsoft Sql Server 2008 ott figyel, de configuration manager, error and usage reporting, installation center, és Import and export data funkciók érhetők csak el.
-
Lakers
tag
Hello!
Kész, Silverlight alkalmazásból, vagy WPF, vagy C#-ból hogyan lehet exe-t csinálni?
Láttam a codeprojecten alkalmazásokat és a VS-ben szépen fut, de szeretném ha külön, ahogy némelyiknél van csak egy exe fájlból futna az egész. ez hogyan lehetséges? -
Lakers
tag
Így gondoltam, ahogy az oldalon is van, Ott a project forrásfájlja, és ott van külön egy exe amihez nem kell debugolni stb, csak nyomatja a játékot
-
Lakers
tag
Sziasztok!
Egy értelmezési segítséget szeretnék kérni, hogy pontosan mint csinál a függvény:
public void AddItem(Product product, int quantity)
{
var line = lines.FirstOrDefault(x => x.Product.ProductID == product.ProductID);
if (line == null)
{
lines.Add(new CartLine{Product = product, Quantity = quantity});
}
else
{
line.Quantity += quantity;
}
}var line = lines.FirstOrDefault(x=>x.Product.ProductID==product.ProductID); érdekelne, elsősroban, illetve még az if ág.
Az osztály kódjai:
public class CartLine
{
public Product Product { get; set; }
public int Quantity { get; set; }
}
private List<CartLine> lines = new List<CartLine>();
public IList<CartLine> Lines {get {return lines;}}Nem igazán tudom, értelmezni, hogy itt pontosan mint csinál. Szájbarágós magyarázatot szívesen fogadok!
-
Lakers
tag
Sziasztok!
A feladat a következő: Egy olyan progi írása, amely egy árú kezdőbetűiből megkeresi az adott árút és kiírja annak árát, de csak akkor ha egyértelmű a találat.
Néhány kódrészletet nem értek:
while (j<=N-1 && (A[j].Név.Length < keresett.Length || A[j].Név.Substring(0,keresett.Length) != keresett || i==j))
itt az i == j-t nem értem, hogy az miért kell.talalt2 = (j <= N - 1);
if (!talalt2)
{
Console.WriteLine("Keresett Áru ára:" + A(i).Ár);
}Illetve a talált és a talált2 az pontosan jelent? amikor (i<=N-1) Én először megtalált index számra tippeltem... de nem hiszem, hogy az lenne.
Ha nekem ezt eltudnátok magyarázni, hogy pontosan, mit miért csinál a kódrészlet, akkor megalapozátok a programozói pályámat Előre is köszönöm a segítséget
Itt a kód:Console.WriteLine("Keresett Áru nevének kezdőbetűi:");
keresett = Console.ReadLine();
i = 0;
while (i<=N-1 && (A[i].Név.Length < keresett.Length || A[i].Név.Substring(0,keresett.Length) !=keresett ))
{
i++;
}
talalt = (i <= N - 1);
if (talalt)
{
j = 0;
while (j<=N-1 && (A[j].Név.Length < keresett.Length || A[j].Név.Substring(0,keresett.Length) != keresett || i==j))
{
j++;
}
talalt2 = (j <= N - 1);
if (!talalt2)
{
Console.WriteLine("Keresett Áru ára:" + A[i].Ár);
}
else
{
Console.WriteLine("Nem egyértelmű");
}
}
else
{
Console.WriteLine("Nincs ilyen árú!");
}[ Szerkesztve ]
-
Lakers
tag
válasz Jester01 #1920 üzenetére
Köszönöm Jester,
Akkor mely könyveket ajánlod?
Egy kellene C/C++ nyelvre (elsősorban villamosmérnököknek, műszaki feladatok megvalósítása)
És egy C# amiből esetleg .Net alapjai.Így utólag Bruce Eckel - Thinking in C++ könyv-e tetszik átnézésre, mert sok benne a példakód
Ez a kód is egy könyvben volt...(Címe: Többnyelvű programozástechnika)
-
Lakers
tag
Sziasztok!
Van néhány kódrészlet, amit nem értek, és ahhoz kérnék segítséget, hogy ha valaki leírná, lépésről, lépésre, hogy mit miért csinál a program:
Kódrészletek:
class Ló
{
public string Name { get; set; }
public DateTime Born { get; private set; }
public int? Price { get; set; }
public Ló(string name, DateTime born)
{
Name = name;
Born = born;
Awards = new List<Award>();
}
public List<Award> Awards { get; set; }
public event EventHandler<LóversenyEventArgs> Verseny;
public bool Versenyez(string versenynév)
{
if (Verseny != null)
{
LóversenyEventArgs lvea =new LóversenyEventArgs(versenynév);
Verseny(this, lvea);
}
Random r = new Random();
int i = r.Next(0, 10);
//return i < 2 ? true : false;
return i < 2;
}
public override string ToString()
{
return String.Format("Név: {0}, született: {1}, ár: {2}",
Name, Born, Price == null ? "N/A" : Price.ToString());
//price ?? 0
}
}
class Award
{
public string Name { get; set; }
public int Prize { get; private set; }
public Award(string name, int prize)
{
Name = name;
Prize = prize;
}
}
class Függő
{
public void FelrakjaAzÖsszesPénzét(object sender, LóversenyEventArgs e)
{
Console.WriteLine("FUSS, {0}, FUSS!!!\nVerseny: {1}",
((Ló)sender).Name.ToUpper(), e.VersenyNév);
}
class LóversenyEventArgs : EventArgs
{
public string VersenyNév { get; private set; }
public LóversenyEventArgs(string vn)
{
VersenyNév = vn;
}
}
class Program
{
static void Main(string[] args)
{
List<Ló> lovak = new List<Ló>
{
new Ló("Kincsem", DateTime.Now) {Price =2000},
new Ló("Alma", DateTime.Now) {Price = 11000},
new Ló("Béka", DateTime.Now)
};
Függő f = new Függő();
foreach (Ló l in lovak)
l.Verseny += f.FelrakjaAzÖsszesPénzét;
foreach (Ló l in lovak)
{
if (l.Versenyez("Négybalpata"))
{
Award a = new Award("Négybalpata", 1);
l.Awards.Add(a);
Console.WriteLine("A díjat nyerte: " + l.ToString());
}
else
Console.WriteLine("Ma is hasznavehetetlen: " + l.ToString());
}
...Amit nem értek a következő részlet:
Függő f = new Függő();
foreach (Ló l in lovak)
l.Verseny += f.FelrakjaAzÖsszesPénzét;foreach (Ló l in lovak)
{
if (l.Versenyez("Négybalpata"))
{
Award a = new Award("Négybalpata", 1);
l.Awards.Add(a);
Console.WriteLine("A díjat nyerte: " + l.ToString());
}
else
Console.WriteLine("Ma is hasznavehetetlen: " + l.ToString());
}Itt is elsősorban az if(l.Versenyez("Négybalpata")) résztől homályos nekem.
De még az előtte lévő f.FelrakjaAzÖsszesPénzét delegate rész sem tiszta.A segítségeteket előre is köszönöm! Szájbarágós magyarázatot előnyben részesítem
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Súlyos adatvédelmi botrányba kerülhet a ChatGPT az EU-ban
- Gaming notebook topik
- Elektromos rásegítésű kerékpárok
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- EA Sports WRC '23
- Milyen notebookot vegyek?
- Kínai, és egyéb olcsó órák topikja
- Napelem
- Azonnali informatikai kérdések órája
- Multimédiás / PC-s hangfalszettek (2.0, 2.1, 5.1)
- További aktív témák...