Chassi: Svart, PSU: 230 volt, Moderkort: Stort, CPU: Med fläkt, Minne: Tappat, GPU: Klarar MsPaint jättebra, Hårddiskar: Stor och liten, Mus: Med rullhjul, Tangentbord: Svenskt, Skärm: Platt
Fråga angående C# och sortering
Jag har skapat en enkelt spel, Snake, som console app..och ska sortera de tänkte jag..Hur går man till väga?
*Vad* är det du vill sortera? En highscorelista?
"sortera en kod"
En vanlig sortering är att du placerar fälten högst upp i filen och sedan konstruktorerna och sedan funktioner
*Vad* är det du vill sortera? En highscorelista?
Nä inte direkt en highscore lista
"sortera en kod"
En vanlig sortering är att du placerar fälten högst upp i filen och sedan konstruktorerna och sedan funktioner
Jo, tror de är mer åt de hållet jag tänkte på när jag läste lite om sortering...men vad är poängen med de? Att koden ska bli mer lättläst?
Ifall jag länkar en del av koden, kan ni ge exempel på en sortering?
Jo, tror de är mer åt de hållet jag tänkte på när jag läste lite om sortering...men vad är poängen med de? Att koden ska bli mer lättläst?
Ifall jag länkar en del av koden, kan ni ge exempel på en sortering?
Är det "Code refactoring" du tänker på? (https://en.wikipedia.org/wiki/Code_refactoring)
Jag gissar att TS bara hört talas "sortering" nämnas i samband med programmering och vill lära sig vad det är och hur man gör det...
Att refakturera eller sortera fält/metoder/konstruktorer är inget man normalt menar när man pratar om sortering. I 99% av fallen skulle jag påstå att man vill sortera en ordnad datamängd med hjälp av antingen en algoritm eller en inbyggd metod.
Jo, tror de är mer åt de hållet jag tänkte på när jag läste lite om sortering...men vad är poängen med de? Att koden ska bli mer lättläst?
Ifall jag länkar en del av koden, kan ni ge exempel på en sortering?
Om det är "refactoring" (omformatering) av kod du åsyftar på så är det för att det skall bli lättare att läsa och följa koden ja.
dvs, om du skall deklarera en variabel för en klass så är det rimligt att placera den deklarationen högst upp i klassen.
Se koden i spoiler taggen för ett exempel...
using System;
using System.Collections.Generic;
namespace PersonTest {
class Program {
static void Main(string[] args) {
List<Person> family = new List<Person>();
// Create family firstname lastname age weight(kg) height(cm)
family.Add(new Person( "Fralia", "Hansson", 44, 76.2f, 168.4f )); // Married to Murphy but keeping her last name.
family.Add(new Person( "Murphy", "Smith", 48, 92.6f, 185.3f ));
family.Add(new Person( "Frank", "Wesson", 20, 65.8f, 180.1f )); // Married taking another last name.
family.Add(new Person( "Elisa", "Smith", 19, 70.5f, 176.2f ));
family.Add(new Person( "Mark", "Smith", 12, 58.3f, 129.4f ));
family.Add(new Person( "Hank", "Smith", 10, 49.9f, 124.6f ));
family.Add(new Person( "Linda", "Smith", 6, 41.7f, 85.8f ));
// Sort family by firstname.
Console.WriteLine("Sorted by first name:");
family.Sort((Person a, Person b) => a.FirstName.CompareTo(b.FirstName));
ListFamily(family);
// Sort family by lastname.
Console.WriteLine("Sorted by last name:");
family.Sort((Person a, Person b) => a.LastName.CompareTo(b.LastName));
ListFamily(family);
// Sort family by age.
Console.WriteLine("Sorted by age:");
family.Sort((Person a, Person b) => a.Age.CompareTo(b.Age));
ListFamily(family);
// Sort family by age descending.
Console.WriteLine("Sorted by age (descending):");
family.Sort((Person a, Person b) => -a.Age.CompareTo(b.Age));
ListFamily(family);
Console.WriteLine();
Console.WriteLine("Press any key to continue!");
Console.ReadKey();
}
static void ListFamily(List<Person> family) {
Console.WriteLine("{0,-25}{1,-5}{2, -8}{3}", "Name", "Age", "Height", "Weight");
foreach (Person person in family)
Console.WriteLine(person.ToString());
Console.WriteLine();
}
}
class Person : IComparable {
private string firstName;
private string lastName;
private int age;
private float height; // In cm.
private float weight; // In kg.
// ... More variable declarations.
public string FirstName { get { return firstName; } }
public string LastName { get { return lastName; } }
public int Age { get { return age; } }
public float Height { get { return height; } }
public float Weight { get { return weight; } }
public string FullName {
get { return string.Join(" ", firstName, lastName); }
}
// Constructor
public Person(string firstName, string lastName, int age, float weight, float height) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.height = height;
this.weight = weight;
}
// Will increase the persons age by one.
public void HaveABirthday() {
age++;
}
// Custom formatted spaced string describing this person.
public override string ToString() {
return String.Format("{0,-25}{1,-5}{2, -8}{3}", FullName, Age, Height, Weight);
}
// Compare one person to another, we sort by fullname.
// If the "person" we compare to isn't actually a person we sort our person before the invalid person.
public int CompareTo(object person) {
if (person.GetType() != typeof(Person))
return -1;
return FullName.CompareTo(((Person)person).FullName);
}
// Compare function, in this case we compare the two provided objects to eachother instead of each person to person class.
public int CompareTo(IComparable a, IComparable b) {
return a.CompareTo(b);
}
}
}
Ordningen som jag följer är:
privata deklarationer.
publika deklarationer
publika properties (egenskaper)
konstruktör
Eventuell destruktör
Eventuell Dispose() metod
Metoder
I samma kod får du ett exempel på hur man sorterar en lista.
Är det "Code refactoring" du tänker på? (https://en.wikipedia.org/wiki/Code_refactoring)
Jag gissar att TS bara hört talas "sortering" nämnas i samband med programmering och vill lära sig vad det är och hur man gör det...
Att refakturera eller sortera fält/metoder/konstruktorer är inget man normalt menar när man pratar om sortering. I 99% av fallen skulle jag påstå att man vill sortera en ordnad datamängd med hjälp av antingen en algoritm eller en inbyggd metod.
Om det är "refactoring" (omformatering) av kod du åsyftar på så är det för att det skall bli lättare att läsa och följa koden ja.
dvs, om du skall deklarera en variabel för en klass så är det rimligt att placera den deklarationen högst upp i klassen.
Se koden i spoiler taggen för ett exempel...
using System;
using System.Collections.Generic;
namespace PersonTest {
class Program {
static void Main(string[] args) {
List<Person> family = new List<Person>();
// Create family firstname lastname age weight(kg) height(cm)
family.Add(new Person( "Fralia", "Hansson", 44, 76.2f, 168.4f )); // Married to Murphy but keeping her last name.
family.Add(new Person( "Murphy", "Smith", 48, 92.6f, 185.3f ));
family.Add(new Person( "Frank", "Wesson", 20, 65.8f, 180.1f )); // Married taking another last name.
family.Add(new Person( "Elisa", "Smith", 19, 70.5f, 176.2f ));
family.Add(new Person( "Mark", "Smith", 12, 58.3f, 129.4f ));
family.Add(new Person( "Hank", "Smith", 10, 49.9f, 124.6f ));
family.Add(new Person( "Linda", "Smith", 6, 41.7f, 85.8f ));
// Sort family by firstname.
Console.WriteLine("Sorted by first name:");
family.Sort((Person a, Person b) => a.FirstName.CompareTo(b.FirstName));
ListFamily(family);
// Sort family by lastname.
Console.WriteLine("Sorted by last name:");
family.Sort((Person a, Person b) => a.LastName.CompareTo(b.LastName));
ListFamily(family);
// Sort family by age.
Console.WriteLine("Sorted by age:");
family.Sort((Person a, Person b) => a.Age.CompareTo(b.Age));
ListFamily(family);
// Sort family by age descending.
Console.WriteLine("Sorted by age (descending):");
family.Sort((Person a, Person b) => -a.Age.CompareTo(b.Age));
ListFamily(family);
Console.WriteLine();
Console.WriteLine("Press any key to continue!");
Console.ReadKey();
}
static void ListFamily(List<Person> family) {
Console.WriteLine("{0,-25}{1,-5}{2, -8}{3}", "Name", "Age", "Height", "Weight");
foreach (Person person in family)
Console.WriteLine(person.ToString());
Console.WriteLine();
}
}
class Person : IComparable {
private string firstName;
private string lastName;
private int age;
private float height; // In cm.
private float weight; // In kg.
// ... More variable declarations.
public string FirstName { get { return firstName; } }
public string LastName { get { return lastName; } }
public int Age { get { return age; } }
public float Height { get { return height; } }
public float Weight { get { return weight; } }
public string FullName {
get { return string.Join(" ", firstName, lastName); }
}
// Constructor
public Person(string firstName, string lastName, int age, float weight, float height) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.height = height;
this.weight = weight;
}
// Will increase the persons age by one.
public void HaveABirthday() {
age++;
}
// Custom formatted spaced string describing this person.
public override string ToString() {
return String.Format("{0,-25}{1,-5}{2, -8}{3}", FullName, Age, Height, Weight);
}
// Compare one person to another, we sort by fullname.
// If the "person" we compare to isn't actually a person we sort our person before the invalid person.
public int CompareTo(object person) {
if (person.GetType() != typeof(Person))
return -1;
return FullName.CompareTo(((Person)person).FullName);
}
// Compare function, in this case we compare the two provided objects to eachother instead of each person to person class.
public int CompareTo(IComparable a, IComparable b) {
return a.CompareTo(b);
}
}
}
Ordningen som jag följer är:
privata deklarationer.
publika deklarationer
publika properties (egenskaper)
konstruktör
Eventuell destruktör
Eventuell Dispose() metod
Metoder
I samma kod får du ett exempel på hur man sorterar en lista.
Tack för alla svar:) Ska kolla genom och återkomma ifall jag lär mig något:)
Och som sagt tidigare av MrMadMan, jag kom över ordet sortering och vill lära mig de:)
- Igår Nvidia: "Energieffektiva RTX 4060 sparar hundralappar" 34
- Igår MSI Geforce RTX 4060 Ventus 2X OC – bra prestanda vid 1080p men medioker kylare 43
- Igår Noctua släpper monteringsram för "deliddade" Ryzen 7000-processorer 15
- Igår Nvidias nästa arkitektur för Geforce kommer år 2025 58
- 27 / 6 Afox släpper kompakt Geforce RTX 4090 36
- Igår Veckans fråga: Vilket operativsystem föredrar du? 75
- Igår Bilar med smarta inslag ger fler dumma fel 56
- 27 / 6 Telekombranschen: "Smarta glasögon ersätter telefoner inom fem år" 88
- 26 / 6 Lastpass-användare rasar – kan inte logga in 59
- 26 / 6 Inet frågar SweClockers – Vad skulle du vilja förbättra på Inet.se? 53
- Benify-erbjudanden på Samsung-TV [utbruten tråd]1028
- Solfilm till fönster för sommarvärmen. Behöver råd.29
- Diablo IV – den stora tråden2702
- Framtiden för C# och .Net i Sverige46
- Fel post (dödsbo)8
- Bildvisnings program5
- Hjälp angående gammal psu och "nytt" grafikkort0
- Fästingar.1
- PSVR2 - diskussionstråd444
- Kommer flytta till stan och mitt wifi kommer säkert synas av hundratals människor varje dag. Vilken router ska jag köpa och hur ska den ställas in?6
- Säljes LG 27'' UltraGear 27GP950 4K Nano IPS 160 Hz HDMI 2.1
- Säljes Star Wars Jedi AMD kod
- Säljes Trasig Xiaomi Mi Electric Scooter (M365) Svart
- Säljes 5800x3D + x570 Meg Unify + be quiet! Dark Rock Slim
- Säljes AMD ASUS DUAL RX6700XT
- Säljes Dell OptiPlex 7010
- Säljes Datordelar: i5 9600k + 1070 GTX mm.
- Säljes 1080 TI | Vattenblock | 1TB SSD | Apple Watch 4 Stainless | Hörlurar | Mikrofon
- Säljes Intressekoll: Xbox Series S 512Gb samt Switch Oled 64Gb Vit
- Säljes Gamingdator RTX 3090, i9-10900K, 32GB ram
- Nvidia: "Energieffektiva RTX 4060 sparar hundralappar"35
- MSI Geforce RTX 4060 Ventus 2X OC – bra prestanda vid 1080p men medioker kylare43
- Veckans fråga: Vilket operativsystem föredrar du?75
- Bilar med smarta inslag ger fler dumma fel56
- Noctua släpper monteringsram för "deliddade" Ryzen 7000-processorer15
- Nvidias nästa arkitektur för Geforce kommer år 202558
- Microsoft vill strömma Windows från molnet71
- Starfield utvecklas med AMD:s välsignelse145
- Telekombranschen: "Smarta glasögon ersätter telefoner inom fem år"88
- En av tre svenskar använder annonsblockerare79
Externa nyheter
Spelnyheter från FZ
- Alan Wake och CoD: Kallt krig snart på PS Plus, enligt läcka igår
- Red Dead Redemption åldersmärkt igen i Korea – det spekuleras i remaster igår
- Fallout London flyttas för att slippa Starfield-konkurrensen igår
- Minecraft-filmen kan ha hittat sin Steve – Pedro "The Last of Us-Joel" Pascal igår
- Stor Diablo IV-patch släppt, mer XP och ombalanserade klasser igår