Hirdetés
- Apple iPhone 13 mini - miért nem veszik elegen?
- Milyen okostelefont vegyek?
- Xiaomi Mi 11 Ultra - Circus Maximus
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Apple Watch
- Poco X6 Pro - ötös alá
- Nokia 2660 Flip - JOMObil
- Redmi Note 8 Pro - Redmi, a profi
- Samsung Galaxy A54 - türelemjáték
- Samsung Galaxy A52s 5G - jó S-tehetség
Hirdetés
-
IFA 2024: Gombnyomásra vált kijelzőmódot a TCL telefonja
ma Kezünkben a harmadik generációs NXTPaper technológiát használó TCL 50 NXTPaper.
-
A Samsung fontolgatja, hogy megveszi a Nokia egy részét
it A Nokia mobilhálózati ágazatát veheti meg a Samsung, de a részletek még bizonytalanok.
-
IFA 2024: Vivobookok triójával készült az ASUS
ph Egy klasszikus és két 360 fokban kihajtható modell érkezik.
Új hozzászólás Aktív témák
-
vlevi
nagyúr
Úgy kell kezdeni, hogy file new project, consoleapplication. Akkor kapsz egy main-t, ami indul a progi futtatásakor.
namespace ConsoleApplication1
{
class Szemely
{
string Nev;
public Szemely(string neve)
{
Nev = neve;
}
internal void Kiir()
{
Console.WriteLine(Nev);
}
}
class Program
{
static void Main(string[] args)
{
Szemely Bela=new Szemely("Béla");
Bela.Kiir();
Console.ReadLine();
}
}
}[ Szerkesztve ]
-
vlevi
nagyúr
Ha azt szeretnéd, hogy a consolra a felhasználó nevét írja ki, akkor overrideolnod kell a ToString metódust. Mert alapfelállásban a class neve íródik ki.
Itt pedig néhány módszer a tömb feltöltésére, és kiírására.
class Szemely
{
string Nev;
public Szemely(string neve)
{
Nev = neve;
}
override public string ToString() {
return Nev;
}
}
class Program
{
static void Main(string[] args)
{
Szemely bela=new Szemely("Béla");
Console.WriteLine(bela);
Console.ReadLine();
Szemely[] tagok = {new Szemely("András"),new Szemely("Béla"), new Szemely("Dezső"), new Szemely("Kálmán"), new Szemely("Irma") };
for (int i = 0; i < tagok.Length; i++)
{
Console.WriteLine(tagok[i]);
}
Console.ReadLine();
foreach (var valaki in tagok)
{
Console.WriteLine(valaki);
}
Console.ReadLine();
}
} -
vlevi
nagyúr
Igazat megvallva, ilyen dolgokra jobb a lista, mint a tömb. Sosem tudhatjuk előre, hány felhasználó lesz.
List<Szemely> tag2 = new List<Szemely> { new Szemely("András"), new Szemely("Béla"), new Szemely("Kázmér"), new Szemely("Dezső"), new Szemely("Mátyás"), new Szemely("Irma") };
tag2.Add(new Szemely("Jolán"));
foreach (var ki in tag2)
{
Console.WriteLine(ki);
}
Console.ReadLine();Viszont most én is kérdeznék. Van arra lehetőség Visual Studioban, hogy a {} és pl. a <> karaktereket valami gyorsbillentyűvel beírjam? Magyar billentyűzeten marha hülye helyen vannak, altgr-el kényelmetlen. Állandóan váltogatni a magyar és angol között meg mégszarabb.
[ Szerkesztve ]
-
vlevi
nagyúr
De, használom. Viszont egy sima eljárásra nem találtam. pl. arra, hogy
void bizbasz
{}
Annyira kényelmentlen, hogy Delphiben hamarabb beírom a begin end párost, mint ezt a két karakter... Bezzeg a múlt század végén, amikor még nem volt magyar billentyűzet, milyen szuper is volt, őú volt a szogletes zárójel, és ŐÚ a kapcsos... Pontosvesszőhöz sem kellett altgr, annak csak annyi a szerencséje, hogy közel van egymáshoz a kettő, azt már megszoktam együtt lenyomni.
-
vlevi
nagyúr
"Ráadásul az altgr meg a b sincs túl messze egymástól."
Messze van, mert az már kétkezes kombináció. És pont az alt+shift váltogatást akarom elkerülni...
De ez csak egy olyan felvetés volt, hogy ha van rá valami 1×ű, akkor jó. Ha nincs, akkor nincs."A begin-endnél rosszabb megoldás meg szerintem kevés van "
SQL-ben is dolgozok, ott is begin end van, ezért vagyok úgy vele, hogy marhára kézre áll.
Olyan ez, hogy egyszer írtam egy levelet valakinek, és kábé ötödikre tudtam leírni a (most se sikerült ) selejt szót. 5-ből négyszer select lett belőle -
vlevi
nagyúr
Na, közben rajzoltam magamnak egy code snippetet, ami pont úgy működik, mint pl. a gyári foreach. beírom, hogy met, aztán tab-tab és kész. A foreachből másoltam, minimálisat kellett rajta átírni.
Ha valakinek kell, felraktam a dropboxra, csak be kell másolni a dokumentumok mappába, a visual studio 2010 (12, kinek mi van), könyvtárába, pl.
C:\Users\VLevi\Documents\Visual Studio 2012\Code Snippets\Visual C#\My Code Snippets -
vlevi
nagyúr
"A lehető legkevesebb mágiával kell élni szerintem"
Én ezt csak arra akartam írni, hogy a személy nevét ki akarja írni a console writeline-al, vagy egyéb helyen van szükség rá, ahol a ToString-et használja a C#, ott ez lehet a megoldás. Természetesen átlagos esetben jobb, az, ami te írtál, hogy lehetőség szerint használjunk mindent a helyén."Igaziból nem is tudom szerver oldalon van-e tisztán natív keretrendszer"
Második futtatásra már az
Mert a JIT elrakja a lefordított kódot. Engem igazából csak az zavar, hogy ez a lefordított kód nem marad meg. És minden alkalommal, amikor pl. elindítom az ATI Catalystot, vagy a Samsung KIES-t, akkor az idő nagyrészét az viszi el nap mint nap, hogy a JIT kódot lefordítsa a gépem. Vagy rosszul gondolom, és megmarad valahol a lefordított kód, pl. a gép kikapcsolása után? Asszem nem.[ Szerkesztve ]
-
vlevi
nagyúr
Feljebb írod az int trackértéket.
a programba teszel egy public static int trackertek változót, azt folyamatosan tudod majd írni, olvasni.
De, ha nagyon tudományos akarnék lenni, akkor egy csak olvasható property-t tennék oda, ami mindíg kiolvasná a trackbar értékét.
Még pontosabban a formon csinálnék egy olvasható public property-t, ami ugyanezt csinálja.
Viszont én meg azt nem tudom, hogy ha a program tetszőleges részéről el akarom érni a form1-et, akkor azt hogyan tudom megtenni? Nem a class-t, hanem az abból létrejött példányt. Mert ehhez az kellene. Delphiben tudom, mert ott minden form ojjektumhoz fel volt véve egy, a nevével megegyező változó, és amikor létrehoztuk a formot, akkor abba az objektumba tároltuk le.
De C#-ban nem így van, ott a form úgy indul, hogy new Form1(); , oszt csókolom, nincs sehova lerakva az objektum. -
vlevi
nagyúr
Közben megtaláltam, hogyan lehet levadászni egy formot.
private TForm getForm<TForm>()
where TForm : Form
{
return (TForm)Application.OpenForms.OfType<TForm>().FirstOrDefault();
}Ennek alapján a formom elejére betettem egy property-t, ami visszaadja saját magát.
static internal FormEgy instance { get {return (FormEgy)Application.OpenForms.OfType<FormEgy>().First();} }
Természetesen a kezelő oldalon meg kell nézni, hogy létezik-e a form, de ez azthiszem természetes.
-
vlevi
nagyúr
"Ezzel nagyon gyorsan és igénytelenül át lehet hidalni a problémát."
Igen, ezért folytattam úgy, hogy változóba nem szívesen tenném én sem.Amúgy pedig azért kell néha elérni, mert időnként az "A" formról indítom a "B" formot, és jó lenne onnan néha néminemű dolgot elérni. Persze át is lehet adni paraméterként, van eset, amikor az az átadandó valami egy folyamatosan változó érték, és mire a "B" formon szükség van rá, addigra már más az értéke, mint a "B" form indításakor.
-
-
vlevi
nagyúr
Ahogy előttem írák, nem kell létrehozni előre fix mérettel a tömböt.
static void Main(string[] args)
{
int[] tomb;
Console.Write("Tömb mérere? :");
string s= Console.ReadLine();
int meret = int.Parse(s);
tomb = new int[meret];
Random veletlen = new Random();
for (int i = 0; i < tomb.Length; i++)
{
tomb[i] = veletlen.Next(10,100);
}
foreach (var item in tomb){
Console.WriteLine(item);
}
Console.ReadLine();
}Másik dolog, hogy programozástechnikailag nagyon csúnya és veszélyes hogy bekéréskor nem egy függvény adja vissza a bekért számot, hanem valahol beállít egy változót.
[ Szerkesztve ]
-
vlevi
nagyúr
Megmondom az őszintét, nem értem a feladatot
Az output minta teljesen összezavart.
Mert, ha ki kell írni a sorok, az oszlopok összesenjét, az az output állományban max két sor, plusz 1 a végösszeg, és kész, valami ilyesmi"110,85 150,25 383,54 96,43 -40,29 -135,52 96,99 24,10
19,60 121,07 545,68
686,35
"
És, ha már 10 karakter szélesen kell, akkor a mintában miért nem úgy van?
Külön szopatás jelleggel van tört szám az első sorban?
Jó, tudom, hogy az a sorok és oszlopok száma, de ha már a táblázatban szóközzel vannak elválasztva a számok, akkor joggal feltételezhetném, hogy ez is egy tört szám, és nem kettő
Szóval mehet a házi feladat kiadás javításra[ Szerkesztve ]
-
vlevi
nagyúr
válasz Neil Watts #3964 üzenetére
Hát, igen, ilyenekre van a Linq, hogy az ember ne az ilyen kereső, sorrendező, satöbbi kódokra pazarolja az energiát.
De ha ez egy suli feladat, akkor gondolom a tanár nem venné jó néven az ilyenfajta megoldástusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Termekkereso
{
class Termek
{
internal double Ertek;
internal double Suly;
internal string Nev;
}
class Program
{
static void Main(string[] args)
{
Termek[] Termekek =
{
new Termek { Ertek = 10, Suly = 5, Nev = "lila" },
new Termek { Ertek = 15, Suly = 22, Nev = "lila" },
new Termek { Ertek = 20, Suly = 4, Nev = "lila" },
new Termek { Ertek = 22, Suly = 15, Nev = "Joli" },
new Termek { Ertek = 27, Suly = 7, Nev = "Joli" },
new Termek { Ertek = 30, Suly = 59, Nev = "Joli" },
new Termek { Ertek = 40, Suly = 9, Nev = "karton" },
new Termek { Ertek = 45, Suly = 1, Nev = "karton" }
};
double keres = 22;
Termek talalat = (from x in Termekek where x.Ertek == keres select x).First();
if (talalat == null)
{
Console.WriteLine("Nincs találat");
}
else {
Console.WriteLine("Találat {0} {1} ", talalat.Nev,talalat.Suly);
}
Console.ReadLine();
}
}
}[ Szerkesztve ]
-
vlevi
nagyúr
válasz Peter Kiss #3966 üzenetére
Igazad van, kipróbáltam, tényleg így van.
-
vlevi
nagyúr
És ha nem három különböző listába rakod, hanem egy listába, ahol mindegyik elem egy olyan struct (vagy ojjektum, mindegy), aminek három mezője van? Akkor mehet a list.orderby.
Megpróbálom gyorsan lerajzolni.
-
vlevi
nagyúr
Közben látom, más is rajzolt valamit. Közben megszületett az én megoldásom is: Kiemelttem vastaggal az egyetlen lényeges részt, a sorbarendezést.
var sorrend = listam.OrderBy(x => x.ertek1);
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Sorrendezo
{
struct Sor
{
internal int ertek1;
internal int ertek2;
internal int ertek3;
}
class Program
{
static void Main(string[] args)
{
var listam=new List<Sor>(){
new Sor{ertek1=1,ertek2=5,ertek3=7},
new Sor{ertek1=3,ertek2=7,ertek3=9},
new Sor{ertek1=2,ertek2=5,ertek3=4},
new Sor{ertek1=5,ertek2=3,ertek3=1}
};
var sorrend = listam.OrderBy(x => x.ertek1);
foreach (var item in sorrend)
{
Console.WriteLine("{0} {1} {2}",item.ertek1,item.ertek2,item.ertek3);
}
Console.ReadLine();
}
}
}A végeredmény :
1 5 7
2 5 4
3 7 9
5 3 1[ Szerkesztve ]
-
vlevi
nagyúr
válasz Neil Watts #4033 üzenetére
"ha a lista első számhármasának harmadik tagját szeretném elérni "
Kicsit átcsavartam, és az orderby helyett írtam belőle linq-t, ami után már elő lehet szedni a harmadik elemet. Természetesen, ha van harmadik elem. Mert ha nincs, abból exception lesz...A változás:
var sorrend = (from x in listam orderby x.ertek1 select x);Aztán már egyszerű:
var harmadik= sorrend.ElementAt<Sor>(3);
Console.WriteLine("{0} {1} {2}", harmadik.ertek1, harmadik.ertek2, harmadik.ertek3);u.i.: Igazat megvallva, arra nincs szükség, hogy a "var sorrend = listam.OrderBy(x => x.ertek1);" helyett linq kifejezést használjunk, mert a listam.orderby extension is ugyanazt az IEnumerable-t adja vissza, mint amit a linq-val kapot, és ugyanúgy mehet rajta az ElementAt. Kipróbáltam működik mindkét verzióban.
[ Szerkesztve ]
-
vlevi
nagyúr
válasz kingabo #4145 üzenetére
Kollégám hülyéskedik, és a pácsó szóban nincs c betű
Ahogy a Sony márkanév sem tartalmaz n -t"Ezért írom mindig, hogy "StringComparison.InvariantCulture" kell használni!"
Ott csak Equals és ilyenek vannak. Startswith, indexof, ... megoldható vele valahogy? Nem ismerem a Stringcomparison class-t, ezért kérdezem.[ Szerkesztve ]
-
vlevi
nagyúr
Azt kérdezném, hogy csak én nem találom, vagy tényleg nem lehet Bitmap-et átméretezni?
Természetesen új Bitmapet tudok csinálni az új mérettel, és ebbe beletenni az eredetit, de én pont azt szeretném, hogy az eredeti képet méretezzem át. -
vlevi
nagyúr
válasz Mister_X #4325 üzenetére
var s = Console.ReadLine();
Ezzel deklarálva van az s változó. A var csak egy könnyítés, amikoris a readline eredménye határozza meg a deklarált változó típusát. Írhattad volna helyette a string s=Console.ReadLine(); -t is.
A var-al csak akkor van szívás, ha valami miatt benézed azt a típust, amit a fordító ilyenkor felvesz. Pl. te egy double típust szeretnél, és arra számítasz, hogy az lesz belőle, de a fordító csak int-et vesz fel, és ilyenkor a matematikai műveletek csúnyán félremennek, mert mindent kerekít.Az int.TryParse-nak pedig két outputja is van. Az egyik a visszatérési értéke, ami boolean, itt adja vissza, hogy sikerült-e a konverzió vagy sem. A konverzió végeredményét pedig a második paraméterben kapod vissza.
-
vlevi
nagyúr
válasz Peter Kiss #4748 üzenetére
És szükséges is használni, mert vannak esetek, amikor az automatikus garbage collection nem működik.
Egyszer írtam egy kép átméretező móricka alkalmazást magamnak, nagyon egyszerű app volt, végigment a file listán, fileból betöltötte a képet (ami egy új kép objektum), átméretezte, lementette. Csakhogy, mivel ezervalahány kép volt, elszállt out of memoryval, mert a képet nem dobta el a C# automatikusan. -
vlevi
nagyúr
válasz MATEO6600 #4763 üzenetére
Létre kell hozni egy másik bitmap obejktumot, és abba átmásolni. Most nincs előttem csak táblagép, a pontos metódusnevet most ezért nem tudom megmondani.
Csak ne felejtsd el a régi, már nem használt, eredeti képet felszabadítani, pl. a korábban tárgyalt using használatával.[ Szerkesztve ]
-
vlevi
nagyúr
válasz #51177472 #4779 üzenetére
Szerintem, ha kiolvasod a labelből, mi van beleírva.
if (!int.TryParse(label2.text,i){
i=0;
}
i++;label2.Text = i.ToString();
A tryparese az i változóba beleírja a kapott textből kiolvasott numerikus értéket, ha sikerült a konverzió, és true-val tér vissza. Ha a konverzió nem sikerül, akko rnem ír a kimeneti változóba, és false-t ad vissza.
[ Szerkesztve ]
-
vlevi
nagyúr
válasz jbauer05 #4858 üzenetére
Sot, ha ne, vagy biztos benne, hogy szamotmirtak a textboxba, akkor a tryparse hasznalata a javasolt.
A tryparse ui. booleant ad vissza, es out vaktozoban a parseolt erteket, es false, ha nem sikerutl az atalakitas. tryparse nelkul nagyon ronda hibauzenettel szall el a program.
Bocs, de telefonrol irok, nem biztos, hogy eltalalom.
If int.tryparse(text1, out i1)&&int.tryparse(text2,out i2){
if i1<i2{ jo lesz }
else { nagyobb }
}
else { nem szamot irtak be} -
vlevi
nagyúr
válasz Bobrooney #4887 üzenetére
Hát, azért nagyon is számít.
A Winforms tulajdonképpen a windows 1.0 óta megszokott vezérlőelemekkel operál, ami viccnek tűnik, de mégiscsak igaz. Textbox, listbox, nyomógomb, satöbbi.
A Silverlight az ugyanaz, mint a WPF.
Hát, hogy melyik a nyerő út? Tudja a rák. Sajnos a Microsoftnál sem tudják, csaponganak összevissza, a Silverlightot pl. évek óta nem fejlesztik, a Win8-ban bemutatkozó metro felületről sem bizonyosodott még be, hogy az a jövő útja. Pc fórumon, tomshardveren megjelent már olyan is (aminek a valóságtartalmát ellenőrizni nem tudom), hogy ezen is kavarni fognak a következő windowsban. -
vlevi
nagyúr
válasz Pttypang #4938 üzenetére
A datumnak vannak ora, es perc propertyjei, en azokat olvasgatnam, lehet, hogy jobb, mint konvertalgatni stringbol.
Sot, lehet, irnek egy haromsoros extnesion methodod, oraperc neven, ami az orat es percet kiolvasva, osszerakna stringben. Es akkor mindenhol hivatkozhatsz ra. -
vlevi
nagyúr
kicsit tovább tartott, mint gondoltam, de ez sikerült ennyi idő alatt:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace oraperc
{
class Program
{
static void Main(string[] args)
{
DateTime[] datumok = { DateTime.Now, DateTime.Now.AddHours(8), DateTime.Now.AddSeconds(77) };
foreach (var item in datumok)
{
Console.WriteLine(item.oraperc());
}
Console.ReadKey();
}
}
static class MyExtensions
{
public static string oraperc(this DateTime d)
{
int hh = d.Hour;
int mm = d.Minute;
return hh.ToString("D2") + ":" + mm.ToString("D2");
}
}
}A végeredmény:
17:21
01:21
17:23[ Szerkesztve ]
-
vlevi
nagyúr
válasz K_Gabor #5075 üzenetére
A stringmuveletekkel igy az a baj, hogy mindegyik stringmuvelet eredmenye egy uj string, es a regi feleslegesse valik. Nagyon lassu es memoriazabalo, meg akkor is, elsore ezt nem erzed. Talan a stringbuilder hasznalataval jobb a helyjzet, de akkor sem celszeru stringben, ami raadasul unicode string, tehat 2 byteos is lehet. Mi volt ennek az oka, es miert nem list<byte> -ban taroltad?
-
vlevi
nagyúr
Az a baj, hogy igazad lehet a Pascal szó kiejtése kapcsán. A baj csak az, hogy ezeréves hagyománya van, hogy Basiccel, majd Pascallal foglalkoztak nagyon sokáig az iskolákban. Most van egy új programnyelv, de a feladatok ugyanazok. Ezzel viszont, hogy írjál egy qsort progit, vagy kérd be a személyi számot, ezzel nem nagyon lehet a C# nyelvi lehetőségeit tanítani
-
vlevi
nagyúr
válasz tototos #5371 üzenetére
Idisposable classoknal erdemes a usingot mindig hasznalni.
En egyszer nagyon megszivtam egy kepkonvertalo progimmal, ahol a kepeket nem usinggal hasznaltam, es parezer kep atkonvertalasa kozben elszallt out of memroyval 8G ram mellett!
Usingba rakva 3-4M volt a max memoriahasznalata a proginak. -
vlevi
nagyúr
válasz trisztan94 #5379 üzenetére
Az nem lenne jo megoldas, hogy a kiiras elott keszitenel egy listat a kiirando elemekrol? Tehat mar a legelejen, a legelso kiiraskor feltoltenel egy listat azokkal az indexekkel, amik azt tartalamznak, hogy mit kell kovetkezokent kiirni. Ezt a listat pedig mindig torolhetned, es mivel az mar a veletleszeru indexeket tartalazza, mehetsz sorban rajta, midnit kiirod a legelso elemet, es ki is torlod. Kovetlezo korben megint az elsot.
Amikor ezt toltod, akkor ott egyszeruen egy megnezhetned, hogy van-e az az elem. -
vlevi
nagyúr
válasz zsambek #5391 üzenetére
amit én írok 4-5-6 sorban, azt te egy sorban elintézed!
Nagyon sok esetben errol is szol a c# nyelv. Mivel uj progamnyelv, a megalkotasakor figyelembe tudtak venni az elmult 50 valahany ev programozoi tapasztatait. Ezzel nem fenyezni akarom a c#-ot, de ami treny, az teny. Pl Amig nem ismertem, en sem ertettem a leirasokmalapjan, mire jo a linq, de azota megertettem a lenyeget, es ennek tukreben mar nagyon hasznos dolognak tartom. Tenyleg rengetegszer elfordul, hogy adathalmazokbol a korabbi nyelvekben csak egymasbaagyazott forciklusok tomkelegevel lehetett kibogaraszni az informaciot, itt viszont nehany sorral megvan. Raadasul a nyelv gondoskodik a legoptimalisabb feldolgozasrol, amirol a programozo szinte mindig el fog feledkezni.
Nem mellesleg en is csak lesem karma hozzaszolasit, mert a c#-hoz en is csak nagyon keveset konyitok. Erdeklodo amator szintjen vagyok. Nezegetem, neha egyket aprosagot kiprobalok benne, de mivel a melohelyemen nem hasznaljuk, igy nehez benne melyebben elmelyulni. Az alapfogalmak egyreszerol hallottam, de eleg keveset tudok ertelmes egessze osszerakni.
-
vlevi
nagyúr
válasz trisztan94 #5467 üzenetére
Igen, ez igy van. Akkor lehet szivas a dologbol, ha te mas tipust szeretnel, de automatikusan a fordito berak valamit. Pl az elobbi peldaban int-et, de a kesobbiekben erre, mint double lenne szukseg.
Ú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!
- Creality Ender 3 Pro - Erősen moddolt, inkább alkatrésznek vagy kalandvágyók számára
- Samsung Galaxy Tab S9 FE (5G, 10,9")
- Új Lenovo ideapad 3 Nagyképernyős "Kis Gamer" Laptop -35% 17,3" Ryzen 7 5825U 8Mag 16/512 FHD IPS
- Laptopok piacvezető áron 1 év garanciával /Felvásárlás, Beszámítás/ - Nexus Laptop Webáruház
- MSI G321Q 32' 1440P 170Hz
Állásajánlatok
Cég: Ozeki Kft
Város: Debrecen
Cég: Ozeki Kft
Város: Debrecen