Új hozzászólás Aktív témák
-
x007
tag
Referencia típusoknál az equality operator azt vizsgálja, hogy a két referencia ugyanarra az objektumra mutat-e, de ezt operator overloading-gal megmásíthatod. Referencia típusoknál ez nem javasolt. Inkább írd felül az Equals metódust, vagy még jobb, ha az IEquatable generikus interfészt implementálod (ebben az esetben is írd felül az Equals metódust). Ha nem rendelkezel az osztály felett, javasolt egy összehasonlító osztály létrehozása az IEqualityComparer generikus interfész implementálásával.
[ Szerkesztve ]
-
Lacces
őstag
válasz WonderCSabo #2451 üzenetére
WonderCSabo Lehet igazad van Csak pár egyszerű mezei példát láttam operátor felülírásra!
x007 Az equals-t hogyan kell felülírni? Van rá általános megoldás? (vagy elég úgy ahogy fentebbi hsz-nél van)
És ennek mikor van gyakorlati haszna? (amikor megvizsgálom, hogy a két referencia ugyanaz-e)
Szerk.:
Azt szem látom mire gondoltál, ennyi átírás bőven elegendő [IEquatable.Equals], ami az oldalon van public override bool Equals(Object obj)
?[ Szerkesztve ]
-
x007
tag
Nem, az equals is referencia egyezést vizsgál alapértelmezettként, ha ezt logikai egyezésre akarod módosítani, akkor írd felül.
Igen a példa jó:
public bool Equals(Person other)
{
if (other == null)
return false;
if (this.uniqueSsn == other.SSN)
return true;
else
return false;
}
public override bool Equals(Object obj)
{
if (obj == null)
return base.Equals(obj);
Person personObj = obj as Person;
if (personObj == null)
return false;
else
return Equals(personObj);
}Itt az történik, hogy a Equals(object) metódus megnézi, hogy Person típusú objektumot kapott-e, ha igen továbbdobja az Equals(Person) metódusnak, ami a logikai egyezést vizsgálja.
-
[pod]Diablo
őstag
Üdv!
Azt hogy tudom megvalositani hogy van egy string valtozom,megadok egy bizonyos szot,szoveget,es jelez nekem a program hogyha a stringen belul megtalalhato az adott szo,szoveg?
Elore is koszonom a segitseget!
"Sült hal, Tom Jones, délutáni tea, rossz kaja, mégrosszabb idő, kibaszott Mary Poppins, LONDON!" // ...when i get sad.i stop being sad and be awesome instead...
-
amargo
addikt
válasz [pod]Diablo #2456 üzenetére
“The workdays are long and the weekend is short? Make a turn! Bike every day, bike to work too!”
-
[pod]Diablo
őstag
Üdv!
Egy olyan program irasaba kezdtem most bele ami minden nap a gep bekapcsolasakor atnezi neten a feliratokat,es ha jott ki uj,az adott sorozatokhoz akkor azt le is tolti.Addig megvagyok vele hogy megkeresek egy feliratot es letoltok,csak azt a reszet nemtudom meglehet-e oldani hogy minden betoltesnel ugye atnezi a feliratokat es ha megvan egy adott felirat akkor kovetkezo betolteskor mar a kovetkezo reszhez keresse a feliratot.
amargo: Koszi szepen,sikerult: )
Elore is koszonom a segitseget!
"Sült hal, Tom Jones, délutáni tea, rossz kaja, mégrosszabb idő, kibaszott Mary Poppins, LONDON!" // ...when i get sad.i stop being sad and be awesome instead...
-
martonx
veterán
válasz [pod]Diablo #2459 üzenetére
Használj ingyenes bsplayer-t, az pont ezt csinálja. Meg gondolom kb. bármelyik rendesebb média lejátszó rákeres, és felkínálja a talált feliratot.
Másrészt megnézed, hogy file szinten megvan-e a fájl. Ha nincs akkor letöltöd. Ha megvan, akkor nem töltöd le. Ha jól értelek.
Én kérek elnézést!
-
Gülredy
tag
Sziasztok!
Egy nagyon egyszerű program írásába kezdtem bele. Egy olyan programot írok ami kiírja egy bekért számról hogy prím-e vagy sem. (kezdő vagyok)
A gond csak az hogy nem tudom milyen kikötést adhatnék meg. Mert amit én megadtam az minden számra igaz, így a program szerint minden szám prím amit csak beírok. (x % x == 1 && x%1 == x)
Mert végül is ez a prím szám, hogy ha önmagával osztom akkor az 1, ha 1 el osztom akkor önmaga, de azt nem tudom, hogy azt hogy adthatnám meg hogy mással ne legyen osztható csak ezzel a két kikötéssel és akkor írja ki hogy prím. Valószínűleg nem jó irányból közelítem meg ezért kérném a segítségeteket, mert a neten csak olyat találok ami kiír egy megadott számú prímszámot.Így néz ki a program:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace primszam_e
{
class Program
{
static void Main(string[] args)
{
int x;
Console.WriteLine("Adjon meg egy természetes számot:");
x=int.Parse(Console.ReadLine());
if (x==1 || x==0)
{
Console.WriteLine("Az 1 és a 0 nem prím szám");
}
else if (x % x == 1 && x%1 == x)
{
Console.WriteLine("Prím szám");
}
else
{
Console.WriteLine("nem prím szám!");
}
Console.ReadKey();
}
}
}[ Szerkesztve ]
-
WonderCSabo
félisten
válasz Gülredy #2461 üzenetére
A % operátor a modulus operátor, nem az osztás eredményét adja vissza, hanem hogy mennyi a maradék. Pl. 5 % 2 == 1.
Ergó ez a kifejezés : x % x == 1 && x%1 == x semmilyen számra nem lesz igaz, hiszen egy számot önmagával leosztva a maradék mindig 0, illetve egyel osztva szintén.
Továbbá, a prímszákat a nem prímszámoktól az különbözteti meg, hogy a prímszámoknak pontosan 2 osztója van: 1 és önmaga. A nem prímeknek minimum 3.
"ha önmagával osztom akkor az 1, ha 1 el osztom akkor önmaga"
Ez minden számra igaz, nem csak a prímekre.
A prímség eldöntését első körben úgy szokták megírni, hogy egy ciklusban modulussal osztogatják a számot, és ha a modulus 0-át ad, akkor ugye egy osztót találtak. Ekkor a számlálót megnövelik egyel. A végén megnézik, hogy a számláló 2-e vagy sem.
[ Szerkesztve ]
-
Gülredy
tag
válasz WonderCSabo #2462 üzenetére
Tehát akkor, nekem kellene mondjuk egy for ciklus, amiben megvizsgálom, hogy az adott számnak hány osztója van, és ha az csak 2 akkor kiírom, hogy prím, ha több akkor nem prím?
[ Szerkesztve ]
-
Lacces
őstag
válasz Gülredy #2461 üzenetére
A többiek jól mondják
Plusz, használj TryParse-t a Parse helyett
Magyarázat itt: Magyarázat itt AE-tól
-
Lacces
őstag
Srácok, volt egy beadandó feladat, LáncoltLista C#-ban... (no comment) megoldottam magam módján, de az egyik esetben szeretnék egy szebb megoldást, a többi esetben, ha van valakinek tippje, hogyan lehet átírni rövidebb alakra, optimalizálni, azt is nagyon szívesen fogadom, sőt igénylem a jó tanácsokat
Osztály implementáció a legvégén.
Szépíteni kellene, amit úgy értek elsősorban, hogy megpróbáltam egy másik while ciklusban megírni - ami kommentelve volt - de az úgy nekem nem működött (akkor csak két elemet kaptam vissza), Működik a kód, csak csúnya
public bool AddLast(int val)
{
// Write your code here
if (Head == null)
{
Head = new Node(val);
Size++;
return true;
}
else
{
Node current = new Node(val);
Node previous = Head;
int i = 1;
while (i < Size)
{
previous = previous.Next;
i++;
}/*
while(previous.Next.Next!=null){
previous.Next = previous.Next.Next;
}*/
previous.Next=current;
Size++;
return true;
}
}Ezeket lehet-e másképp implementálni? (vagy optimalizálni)
public bool AddFirst(int val)
{
// Write your code here
Node current = new Node(val);
current.Next = Head;
Head = current;
Size++;
if (Head == current)
return true;
else
return false;
}public bool RemoveAll(int val)
{
// Write your code here
bool result = false;
if (Head == null) return false;
if (Head.Value == val)
{//does head contain the value
Head = Head.Next;
Size--;
result = true;
}
Node Prev = Head;
while ((Prev.Next != null))
{//actually checking prev.next if it contains the value
if (Prev.Next.Value == val)
{
Prev.Next = Prev.Next.Next; //remove link from prev to prev.next
Size--;
result = true;
}
else
{
Prev = Prev.Next;
}
}
return result;
}Osztály Implementáció:
class MyLinkedList
{
public int Size { get; private set; }
Node Head { get; set; }
class Node
{
public int Value { get; private set; }
public Node Next { get; set; }
public Node(int val)
{
Value = val;
}
//... metódusok -
Gülredy
tag
Na és a TryParse-t hogy használjam jelen esetbe mert ha csak átírom a Parse-t TryParse-re akkor azt mondja hogy:
No overload for method 'TryParse' takes 1 arguments
Tehát kell neki egy argumentum de ha beírom a zárójelbe az x-et akkor sem jó neki. PL így:
x = int.TryParse(Console.ReadLine(x));Még nem használtam ezt a tryparse-t és a könyv amiből tanulok ott is csak enum típusoknál használják!
-
Jester01
veterán
A while ciklusos megoldásod rossz (persze ezt te is tudtad )
Ugye csak egyetlen új linket kell hozzáadni, az utolsó elemnél. Ehhez képest te a ciklusmagban piszkálod a linkeket. Ez nem lehet jó.return után egyébként nem kell már az else, ezzel általában sokat lehet javítani az átláthatóságon.
A RemoveAll pedig ránézésre nem működik jól ha a lista elejéről több mint egy elem törlendő.
Jester
-
Lacces
őstag
válasz Jester01 #2470 üzenetére
a return az tényleg igaz, ott az else ágat kivettem. Amúgy melyik a jobb megoldás?
Ha return false vagy return true-t használok, vagy egy bool értéket, és azt adom át a return-nek? pl: bool result = flase; return result;RemoveAll-nál igaz, az elején még nekem while ciklus volt, ott lehet a beadandó miatt átnéztem :-D, Így while szépen veszi ki
While esetében melyikre gondoltál? Amelyik kommentelve van, vagy amelyik használatban?
-
Lacces
őstag
Ehhez mit szólsz? (nekem tetszik :-D)
public bool AddFirst(int val){
Node current = new Node(val);
current.Next = Head;
Head = current;
Size++;
return (Head == current);}public bool AddLast(int val){
if (Head == null)
{
Head = new Node(val);
Size++;
return true;
}
else
{
Node current = Head;
while (current.Next != null)
{
current = current.Next;
}
current.Next = new Node(val);
Size++;
return true;
}
}Kérdés: Mikor és milyen esetben követeli meg a bool függvény, hogy a megadjam neki mindkettő visszatérési típust: return true, és return false, és mikor elégszik meg csak az egyikkel?
AddLast esetében megelégszik, hogy 2 db return true van, de AddFirst-nél nekem nagyon jött a fordító, hogy legyen egy return true és return false is. -
Lacces
őstag
Már lejárt a szerkesztési időlimit... bool metódusra vonatkozó return true/false kérdés felejtős, elfogadta csak a true visszatérési értékre is
Amúgy a Console Ablaknál, hogyan lehet beállítani, hogy fent maradjon az ablak (ne tűnjön el) és ne egy Console.ReadLine()-al állítsam meg?
-
fatal`
titán
válasz WonderCSabo #2475 üzenetére
Jogos, elírtam, de szerintem értette, úgyis az algoritmus volt a lényeg
[ Szerkesztve ]
-
Lacces
őstag
Hogyan kell kivenni a whitespaceket egy Stringből?
Probáltam még a String str = input.Split(' '); -t is használni, de akkor a char x=str[i]; -nél kerültem bajba, a fordító mindig kijelenti, hogy expliciten sem lehet string-et char-á konvertálni.
Trim()-et is bevetettem, de az sem segített rajtamString str = "5 + ( ( 1 + 2 ) * 4 ) −3"; Ennél egy StackEmpty hibát dob ki,
de ha a string-ben nincsenek whitespacek, akkor nem dobja ki a hibátstatic String LengyelFormaKonvertalas(String input)
{
Stack stack = new Stack();
String str = input.Trim();
StringBuilder formula = new StringBuilder();
for (int i = 0; i < str.Length; i++)
{
char x=str[i];
if (x == '(')
stack.Push(x);
else if (IsOperandus(x))
{
formula.Append(x);
}
else if (IsOperator(x))
{
if (stack.Count>0 && (char)stack.Peek()!='(' && Prior(x)<=Prior((char)stack.Peek()) )
{
char y = (char)stack.Pop();
formula.Append(y);
}
if (stack.Count > 0 && (char)stack.Peek() != '(' && Prior(x) < Prior((char)stack.Peek()))
{
char y = (char)stack.Pop();
formula.Append(y);
}
stack.Push(x);
}
else
{
char y=(char)stack.Pop();
if (y!='(')
{
formula.Append(y);
}
}
}
while (stack.Count>0)
{
char c = (char)stack.Pop();
formula.Append(c);
}
return formula.ToString();
} -
eziskamu
addikt
Üdv! Írnom kellene egy egyszerűbb ablakos program Windows CE 5.0 alá. Kellene hozzá valami ingyenes (vagy legalább pár hónapig ingyenes) fejlesztőeszköz GUI builderrel. VS Expressel fordított progik nem futnak, a System.Windows.Forms-ra utaló hibával, csak a karakteres módú programok indulnak el.
-
Lacces
őstag
Nos, köszönöm, a helpet, igyekeztem megírni a stuki alapján a kódot.
Valami nem stimmel az algoritmussal, (hosszabb bemeneti sztringeknél vettem észre)
Mert ezt kellene kapnom:
5 1 2 + 4 * + 3 -
De helyeztte ez jön ki...
5 1 2 + 4 * 3 - +using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace LengyelForma
{
class LengyelForma
{
static void Main(string[] args)
{
String str = "5 + ((1 + 2) * 4) - 3";
String result=LengyelFormaKonvertalas(str);
Console.WriteLine(result.ToString());
Console.ReadLine();
}
static String LengyelFormaKonvertalas(String input)
{
Stack stack = new Stack();
String str = input.Replace(" ",string.Empty);
StringBuilder formula = new StringBuilder();
for (int i = 0; i < str.Length; i++)
{
char x=str[i];
if (x == '(')
{
stack.Push(x);
}
else if (IsOperandus(x))
{
formula.Append(x);
}
else if (IsOperator(x))
{
while (stack.Count > 0 && (char)stack.Peek() != '(' && Prior(x) >= Prior((char)stack.Peek()))
{
char y = (char)stack.Pop();
formula.Append(y);
}
while (stack.Count > 0 && (char)stack.Peek() != '(' && Prior(x) > Prior((char)stack.Peek()))
{
char y = (char)stack.Pop();
formula.Append(y);
}
stack.Push(x);
}
else
{
char y = (char)stack.Pop();
if (y != '(')
{
formula.Append(y);
}
}
}
while (stack.Count>0)
{
char c = (char)stack.Pop();
if(c!='(')
formula.Append(c);
}
return formula.ToString();
}
static bool IsOperator(char c)
{
return (c=='-'|| c=='+' || c=='*' || c=='/');
}
static bool IsOperandus(char c)
{
return (c>='0' && c<='9' || c=='.');
}
static int Prior(char c)
{
switch (c)
{
case '=':
return 1;
case '+':
return 2;
case '-':
return 2;
case '*':
return 3;
case '/':
return 3;
case '^':
return 4;
default:
throw new ArgumentException("Rossz paraméter");
}
}
}
} -
Boolash
aktív tag
Sziasztok!
Jelenleg egy webalkalmásban minden oldalon a page load eseményben futtatok egy LDAP lekérdezést. Ebből nyerek ki biztonsági információkat, ami az aktuálisan bejelentkezett felhasználóhoz köthető.
Hogy lehetne megcsinálni, hogy bejelentkezés után lékérem ezeket az információkat, valahol letárolom, majd onnan olvasom midig ki. DB-ben tárolás jut csak eszembe, de ezt kicsit erősnek tartom.
A konkrét probléma egyébként egy SharePoint-os környezet, ahol webpartokat fejlesztek.
Köszi a tippeket! -
Karma
félisten
válasz eziskamu #2479 üzenetére
Ez szerintem érdekes lehet.
Sajnos a Visual Studionak csak a fizetős változataival lehet a .NET Compact Frameworkkel fejleszteni, az Express nem elég hozzá az addintámogatás hiánya miatt. Valamint ahogy te is tapasztaltad, az asztali .NET nem fut mobileszközökön
Amúgy a VS fejlettebb verzióinak is van trialja.
[ Szerkesztve ]
“All nothings are not equal.”
-
nagyúr
válasz Boolash #2484 üzenetére
Közben kifutottam az időből
Session szerintem is a legszebb, de mivel intranet, nyugodtan megtehető, hogy amikor kell, akkor behívsz AD-be, ez nem okozhat gondot.
Csinálsz rá egy szép entitást (akár modellt, ha MVC) és abban letárolsz mindent. Amíg a session nyitva van, addig úgyis életben van - ha csak olvasod, érdemes singleton-t csinálni belőle.
-
Boolash
aktív tag
válasz Boolash #2493 üzenetére
Sikerült, viszont generikus listát nem tudok kiolvasni..
Létrehoztam egy ADList osztályt, melyet lista típusnak használok:
static List<ADList> ls = new List<ADList>();
Majd ezt a listát mentem el sessionbe:
Session["cegem"] = ls;Idáig minden rendben. Majd kiolvasásnál:
ls= (List<ADList>)Session["cegem"]Erre viszont: Object reference not set to an instance of...
Valószínüleg a casting-al van baja.
próbáltam, hogy létrehozok egy új listát, majd abba teszem bele, de azt sem engedte.
Mi lehet a trükk?Köszi
-
Boolash
aktív tag
válasz ArchElf #2495 üzenetére
Nem, jelenleg így néz ki:
namespace FileInfo
{
class ADList
{
public string CmpName { get; set; }
public string CmpCode { get; set; }
public int? ID { get; set; }
}
}Ha jól értem arra gondolsz, hogy generáljak belőle egy szöveget (stream), majd így rakjam a session-be, majd de-szerializálás.
Ez elvileg csak annyi lenne, hogy örökölni kell ISerializable osztályból? (: ISerializable) -
Boolash
aktív tag
válasz martonx #2499 üzenetére
IList-et használok:
static IList<ADList> ls = new List<ADList>();
A hozzá tartozó class elé kirakom:
[Serializable]
Majd:
Session["cegem"] = ls;
...
ls = (IList<ADList>)Session["cegem"];Viszont ugyanaz a hibaüzenet. Mintha úgy olvastam volna, hogy a .Net megcsinálja a szerializálást ebben az esetben, elég kirakni az osztály elé [Serializable] jelzőt.
Ú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!
- Na, még egyszer, csak ezúttal OnePlus Open néven
- Amazon Kindle
- Kamionok, fuvarozás, logisztika topik
- Amlogic S905, S912 processzoros készülékek
- Nyíregyháza és környéke adok-veszek-beszélgetek
- A régi node-okra koncentrál a szankciók miatt Kína
- Magga: PLEX: multimédia az egész lakásban
- Azonnali VGA-s kérdések órája
- Windows 11
- Székesfehérvár és környéke adok-veszek-beszélgetek
- További aktív témák...
- LG NanoCell 55NANO766QA Halvány píxel csík
- Philips 58PUS8545/12 1 ÉV GARANCIA Játék üzemmód
- Tyű-ha! HP EliteBook 850 G7 Fémházas Szuper Strapabíró Laptop 15,6" -65% i7-10610U 32/512 FHD HUN
- Bomba ár! HP EliteBook 840 G5 - i5-8G I 8GB I 128GB SSD I 14" FHD I HDMI I Cam I W10 I Gari!
- The Last of Us Part I Ps5