Enumitega töötamine C#-s
C# keeles loendi kaudu loendamine võib algajatele pisut segadust tekitada. See põhjustab sageli kompileerimisvigu, kui seda ei tehta õigesti. Tõhusa kodeerimise jaoks on ülioluline aru saada, kuidas õige viis loendiväärtuste itereerimiseks.
Selles artiklis käsitleme lihtsat lähenemist enumi loetlemiseks C#-s, kasutades näidet, mis toob esile levinud lõksud ja õige meetodi. Lõpuks saate hõlpsalt loetleda kõik loendid.
Käsk | Kirjeldus |
---|---|
Enum.GetValues(typeof(Suit)) | Otsib kindlaksmääratud loendis olevate konstantide väärtuste massiivi. |
Enum.GetValues() | Tagastab kõigi loendiväärtuste massiivi. |
Cast<T>() | Teisendab IEnumerable elemendid määratud tüübiks. |
Console.WriteLine() | Kirjutab standardsesse väljundvoogu määratud andmed, millele järgneb praeguse rea lõpetaja. |
foreach | Itereerib kogu või massiivi kaudu, käivitades iga elemendi jaoks koodiploki. |
public enum | Määratleb loenduse, eristatava tüübi, mis koosneb nimeliste konstantide komplektist, mida nimetatakse loendusloendiks. |
Enum-iteratsiooni üksikasjalik seletus
Kaasasolevad skriptid näitavad, kuidas C# keeles loendi kaudu õigesti loendada. Esimene skript kasutab Enum.GetValues(typeof(Suit)) kõigi väärtuste massiivi hankimiseks Suit enum. Seejärel itereeritakse seda massiivi a-ga foreach tsükkel, mis võimaldab programmil käivitada DoSomething(suit) meetod iga loendi väärtuse jaoks. See lähenemine on lihtne ja kasutab enumite tõhusaks käsitlemiseks sisseehitatud C# meetodeid.
Teine skript saavutab sama eesmärgi, kuid kasutab LINQ-i täiendava paindlikkuse ja loetavuse tagamiseks. Helistades Enum.GetValues(typeof(Suit)).Cast<Suit>(), kantakse loendi väärtused loendisse Suit tüüp, mis võimaldab vajadusel täiustatud LINQ-operatsioone. The foreach loop töötleb seejärel iga masti sarnaselt, kutsudes esile DoSomething(suit) meetod iga loendi väärtuse jaoks. Mõlemad skriptid on olulised enumite itereerimiseks ja tavaliste lõkse, nagu enumi tüübi käsitlemine muutujana, vältimiseks.
Enum väärtuste loetlemine C#-s
C# kasutamine Enumi kaudu itereerimiseks
using System;
using System.Linq;
public enum Suit
{
Spades,
Hearts,
Clubs,
Diamonds
}
public class Program
{
public static void Main()
{
foreach (Suit suit in Enum.GetValues(typeof(Suit)))
{
DoSomething(suit);
}
}
public static void DoSomething(Suit suit)
{
Console.WriteLine(suit);
}
}
Enumite õige loendamine C#-s
LINQ kasutamine enumi iteratsiooniks
using System;
using System.Linq;
public enum Suit
{
Spades,
Hearts,
Clubs,
Diamonds
}
public class Program
{
public static void Main()
{
var suits = Enum.GetValues(typeof(Suit)).Cast<Suit>();
foreach (var suit in suits)
{
DoSomething(suit);
}
}
public static void DoSomething(Suit suit)
{
Console.WriteLine(suit);
}
}
Enumi meetodite ja omaduste mõistmine
Lisaks enumite kordamisele on oluline mõista muid kasulikke meetodeid ja omadusi, mida enumid C#-s pakuvad. Üks selline meetod on Enum.GetName(), mis tagastab määratud loendis oleva konstandi nime, millel on määratud väärtus. See võib olla eriti kasulik loendiväärtuste kasutajasõbralike nimede kuvamisel.
Teine kasulik omadus on Enum.IsDefined(), mis kontrollib, kas konkreetses loendis on määratud väärtus või nimi. See meetod on mugav valideerimiseks, et tagada, et antud väärtus on tõepoolest osa määratletud loendikomplektist. Nende meetodite mõistmine võimaldab arendajatel kasutada oma rakendustes enumite täielikku võimsust, tagades tugeva ja loetava koodi.
Korduma kippuvad küsimused enumite loendamise kohta C#-s
- Kuidas saada kõik loendi nimed?
- Kasuta Enum.GetNames(typeof(Suit)) enumis olevate konstantide nimede massiivi hankimiseks.
- Kas ma saan teisendada stringi loendi väärtuseks?
- Jah, kasuta Enum.Parse(typeof(Suit), "Spades") stringi teisendamiseks vastavaks loendi väärtuseks.
- Kuidas kontrollida, kas loendis on väärtus olemas?
- Kasuta Enum.IsDefined(typeof(Suit), value) et kontrollida, kas loendis on konkreetne väärtus.
- Kas enumeid saab kasutada bitipõhiste operatsioonidega?
- Jah, määrates enumi koos [Flags] atribuuti, saab enumeid kasutada bitipõhiste toimingute jaoks.
- Kuidas saada enumi aluseks olevat tüüpi?
- Kasuta Enum.GetUnderlyingType(typeof(Suit)) enumi aluseks oleva tüübi saamiseks.
- Mis on enumi vaikeväärtus?
- Loendi vaikeväärtus on väärtus, mis on seotud nulliga, mis on tavaliselt loendis esimene väärtus.
- Kas ma saan väärtuste asemel itereerida loendinimede kaudu?
- Jah, võite kasutada foreach (string name in Enum.GetNames(typeof(Suit))) nimede kaudu korrata.
- Kuidas ma saan võrrelda kahte loendi väärtust?
- Enum väärtusi saab võrrelda standardsete võrdlusoperaatoritega nagu ==, !=, <ja >.
Peamised ülevaated loendi loendamise kohta
Kokkuvõtteks võib öelda, et enumi loetlemine C#-s nõuab keele pakutavate õigete meetodite ja omaduste mõistmist. Kasutades Enum.GetValues võimaldab otsest iteratsiooni, samas kui LINQ pakub täiendavat paindlikkust. Nende meetodite õige kasutamise tagamine hoiab ära tavalised lõkse, näiteks enum-tüübi käsitlemist muutujana. Lisaks kasutatakse muid loendimeetodeid, nagu Enum.GetName ja Enum.IsDefined suurendab teie koodi tugevust. Nende tehnikate valdamine on tõhusa C# programmeerimise jaoks hädavajalik, võimaldades teil oma rakendustes enumeid tõhusalt ja täpselt käsitleda.