คำถามติดแท็ก enums

ชนิดข้อมูลประกอบด้วยชุดของค่าที่กำหนดชื่อเรียกว่าองค์ประกอบสมาชิกหรือตัวแจงนับของชนิด


14
Enum ควรเริ่มต้นด้วย 0 หรือ 1 หรือไม่?
ลองนึกภาพฉันได้กำหนด Enum ต่อไปนี้: public enum Status : byte { Inactive = 1, Active = 2, } การปฏิบัติที่ดีที่สุดในการใช้ enum คืออะไร มันควรเริ่มต้นด้วย1เช่นตัวอย่างข้างต้นหรือเริ่มต้นด้วย0(ไม่มีค่าที่ชัดเจน) ดังนี้: public enum Status : byte { Inactive, Active }
136 c#  .net  enums 

21
ฉันจะมีคอมโบบ็อกซ์ที่มีขอบเขต enum พร้อมการจัดรูปแบบสตริงที่กำหนดเองสำหรับค่า enum ได้อย่างไร
ในโพสต์Enum ToStringมีการอธิบายวิธีการใช้แอตทริบิวต์ที่กำหนดเองDescriptionAttributeดังนี้: Enum HowNice { [Description("Really Nice")] ReallyNice, [Description("Kinda Nice")] SortOfNice, [Description("Not Nice At All")] NotNice } จากนั้นคุณเรียกใช้ฟังก์ชันGetDescriptionโดยใช้ไวยากรณ์เช่น: GetDescription<HowNice>(NotNice); // Returns "Not Nice At All" แต่นั่นไม่ได้ช่วยฉันจริงๆเมื่อฉันต้องการเติม ComboBox ด้วยค่าของ enum เนื่องจากฉันไม่สามารถบังคับให้ ComboBox โทรGetDescriptionได้ สิ่งที่ฉันต้องการมีข้อกำหนดดังต่อไปนี้: การอ่าน(HowNice)myComboBox.selectedItemจะส่งคืนค่าที่เลือกเป็นค่า enum ผู้ใช้ควรเห็นสตริงการแสดงที่ใช้งานง่ายไม่ใช่แค่ชื่อของค่าการแจงนับ ดังนั้นแทนที่จะเห็น " NotNice" ผู้ใช้จะเห็น " Not Nice At All" หวังว่าการแก้ปัญหาจะต้องมีการเปลี่ยนแปลงโค้ดเล็กน้อยในการแจงนับที่มีอยู่ เห็นได้ชัดว่าฉันสามารถใช้คลาสใหม่สำหรับแต่ละ enum ที่ฉันสร้างขึ้นและลบล้างมันToString()ได้ แต่นั่นเป็นงานที่ต้องทำมากสำหรับแต่ละ …
136 c#  combobox  enums 


15
จะวนซ้ำค่าของ Enum ที่มีแฟล็กได้อย่างไร?
ถ้าฉันมีตัวแปรที่ถือแฟล็ก enum ฉันจะวนซ้ำค่าบิตในตัวแปรนั้นได้หรือไม่ หรือฉันต้องใช้ Enum.GetValues ​​เพื่อวนซ้ำรอบ enum ทั้งหมดและตรวจสอบว่ามีการตั้งค่าใด
131 c#  enums  enum-flags 

12
เราสามารถกำหนดการแปลงโดยนัยของ enums ใน c # ได้หรือไม่?
เป็นไปได้หรือไม่ที่จะกำหนดการแปลง enums โดยปริยายใน c # สิ่งที่สามารถบรรลุนี้? public enum MyEnum { one = 1, two = 2 } MyEnum number = MyEnum.one; long i = number; ถ้าไม่เพราะเหตุใด

15
ฉันควรใช้ #define, enum หรือ const?
ในโปรเจ็กต์ C ++ ที่ฉันกำลังทำอยู่ฉันมีค่าแฟล็กซึ่งสามารถมีได้สี่ค่า ธงทั้งสี่นี้สามารถรวมกันได้ แฟล็กอธิบายถึงเร็กคอร์ดในฐานข้อมูลและสามารถ: สถิติใหม่ ลบบันทึก แก้ไขบันทึก บันทึกที่มีอยู่ ตอนนี้สำหรับแต่ละระเบียนฉันต้องการเก็บแอตทริบิวต์นี้ไว้ดังนั้นฉันจึงสามารถใช้ enum: enum { xNew, xDeleted, xModified, xExisting } อย่างไรก็ตามในที่อื่น ๆ ในโค้ดฉันจำเป็นต้องเลือกว่าจะให้ผู้ใช้มองเห็นเรกคอร์ดใดได้บ้างดังนั้นฉันจึงต้องการส่งผ่านข้อมูลนั้นเป็นพารามิเตอร์เดียวเช่น: showRecords(xNew | xDeleted); ดูเหมือนว่าฉันจะมี appoaches ที่เป็นไปได้สามอย่าง: #define X_NEW 0x01 #define X_DELETED 0x02 #define X_MODIFIED 0x04 #define X_EXISTING 0x08 หรือ typedef enum { xNew = 1, xDeleted, xModified = …

30
มีวิธีง่ายๆในการแปลง C ++ enum เป็นสตริงหรือไม่?
สมมติว่าเรามีชื่อ enums: enum MyEnum { FOO, BAR = 0x50 }; สิ่งที่ฉัน googled คือสคริปต์ (ภาษาใดก็ได้) ที่สแกนส่วนหัวทั้งหมดในโปรเจ็กต์ของฉันและสร้างส่วนหัวด้วยหนึ่งฟังก์ชันต่อ enum char* enum_to_string(MyEnum t); และการใช้งานกับสิ่งนี้: char* enum_to_string(MyEnum t){ switch(t){ case FOO: return "FOO"; case BAR: return "BAR"; default: return "INVALID ENUM"; } } gotcha นั้นมาพร้อมกับ enums typedefed และ enums สไตล์ C ที่ไม่มีชื่อ มีใครรู้เรื่องนี้บ้างไหม? แก้ไข: โซลูชันไม่ควรแก้ไขแหล่งที่มาของฉันยกเว้นฟังก์ชันที่สร้างขึ้น …
123 c++  string  enums  scripting 

2
ใน Java ประเภท enum อยู่ในคลาสคงที่หรือไม่
ดูเหมือนว่าฉันจะไม่สามารถเข้าถึงสมาชิกอินสแตนซ์ของคลาสโดยรอบจากภายใน enum ได้อย่างที่ฉันทำได้จากภายในคลาสภายใน หมายความว่า enums คงที่หรือไม่? มีการเข้าถึงขอบเขตของอินสแตนซ์ของคลาสโดยรอบหรือไม่หรือฉันต้องส่งอินสแตนซ์ไปยังเมธอดของ enum ที่ฉันต้องการ? public class Universe { public final int theAnswer; public enum Planet { // ... EARTH(...); // ... // ... constructor etc. public int deepThought() { // -> "No enclosing instance of type 'Universe' is accessible in this scope" return Universe.this.theAnswer; } …
123 java  enums  scope 

11
วิธีบันทึก enums ในฐานข้อมูล
วิธีที่ดีที่สุดในการบันทึก enums ลงในฐานข้อมูลคืออะไร? ฉันรู้ว่า Java จัดเตรียมname()และvalueOf()วิธีการในการแปลงค่า enum เป็นสตริงและย้อนกลับ แต่มีตัวเลือกอื่น ๆ (ยืดหยุ่น) ในการจัดเก็บค่าเหล่านี้หรือไม่? มีวิธีที่ชาญฉลาดในการทำให้ enum เป็นตัวเลขเฉพาะ ( ordinal()ไม่ปลอดภัยที่จะใช้) หรือไม่? ปรับปรุง: ขอบคุณสำหรับคำตอบที่ยอดเยี่ยมและรวดเร็ว! มันเป็นไปตามที่ฉันสงสัย อย่างไรก็ตามหมายเหตุถึง 'toolkit'; นั่นเป็นวิธีหนึ่ง ปัญหาคือฉันจะต้องเพิ่มเมธอดเดียวกันกับ Enum แต่ละประเภทที่ฉันสร้าง นั่นคือโค้ดที่ซ้ำกันจำนวนมากและในขณะนี้ Java ไม่รองรับโซลูชันใด ๆ สำหรับสิ่งนี้ (Java enum ไม่สามารถขยายคลาสอื่น ๆ ได้)
123 java  database  enums 

4
ส่ง enums ในเทมเพลตมุมมอง angular2
เราสามารถใช้ enums ในเทมเพลตมุมมอง angular2 ได้หรือไม่? <div class="Dropdown" dropdownType="instrument"></div> ส่งผ่านสตริงเป็นอินพุต: enum DropdownType { instrument, account, currency } @Component({ selector: '[.Dropdown]', }) export class Dropdown { @Input() public set dropdownType(value: any) { console.log(value); }; } แต่จะผ่านการกำหนดค่า enum ได้อย่างไร? ฉันต้องการสิ่งนี้ในเทมเพลต: <div class="Dropdown" dropdownType="DropdownType.instrument"></div> แนวทางปฏิบัติที่ดีที่สุดคืออะไร? แก้ไข: สร้างตัวอย่าง: import {bootstrap} from 'angular2/platform/browser'; import {Component, View, …

28
ผูก enum กับกล่องคำสั่งผสม WinForms แล้วตั้งค่า
หลายคนตอบคำถามเกี่ยวกับวิธีผูก enum กับ combo box ใน WinForms มันเป็นแบบนี้: comboBox1.DataSource = Enum.GetValues(typeof(MyEnum)); แต่นั่นก็ไร้ประโยชน์หากไม่สามารถตั้งค่าจริงที่จะแสดงได้ ฉันเหนื่อย: comboBox1.SelectedItem = MyEnum.Something; // Does not work. SelectedItem remains null ฉันได้ลองแล้ว: comboBox1.SelectedIndex = Convert.ToInt32(MyEnum.Something); // ArgumentOutOfRangeException, SelectedIndex remains -1 ใครมีความคิดว่าจะทำอย่างไร?
122 c#  .net  winforms  combobox  enums 

7
แทนที่ valueof () และ toString () ใน Java enum
ค่าใน my enumคือคำที่ต้องมีช่องว่าง แต่ enums ไม่สามารถมีช่องว่างในค่าได้ดังนั้นจึงรวมกันทั้งหมด ฉันต้องการลบล้างtoString()เพื่อเพิ่มช่องว่างเหล่านี้ในที่ที่ฉันบอกไป ฉันยังต้องการให้ enum ระบุ enum ที่ถูกต้องเมื่อฉันใช้valueOf()กับสตริงเดียวกับที่ฉันเพิ่มช่องว่างเข้าไป ตัวอย่างเช่น: public enum RandomEnum { StartHere, StopHere } โทรtoString()บนRandomEnumมีค่าเป็นสตริงผลตอบแทนStartHere "Start Here"โทรvalueof()ในสายเดียวกันที่ ( "Start Here") StartHereผลตอบแทนคุ้มค่า ฉันจะทำเช่นนี้ได้อย่างไร?

6
เหตุใดจึงมักกำหนดแฟล็ก enums ด้วยค่าฐานสิบหก
หลายครั้งฉันเห็นการประกาศ flag enum ที่ใช้ค่าฐานสิบหก ตัวอย่างเช่น: [Flags] public enum MyEnum { None = 0x0, Flag1 = 0x1, Flag2 = 0x2, Flag3 = 0x4, Flag4 = 0x8, Flag5 = 0x10 } เมื่อฉันประกาศ enum ฉันมักจะประกาศเช่นนี้: [Flags] public enum MyEnum { None = 0, Flag1 = 1, Flag2 = 2, Flag3 = 4, Flag4 …
122 c#  .net  enums  enum-flags 

1
การทำความเข้าใจการแจงนับสกาลา
ฉันต้องบอกว่าฉันไม่เข้าใจชั้นเรียนการแจงนับของ Scala ฉันสามารถคัดลอกและวางตัวอย่างจากเอกสารประกอบได้ แต่ฉันไม่รู้ว่าเกิดอะไรขึ้น object WeekDay extends Enumeration { type WeekDay = Value val Mon, Tue, Wed, Thu, Fri, Sat, Sun = Value } import WeekDay._ หมายถึงอะไรtype WeekDay = Valueและทำไมต้องเขียนแบบนั้น? ทำไมval Mon = Value? นั่นหมายความว่าอย่างไร? เหตุใดฉันจึงต้องนำเข้าWeekDay วัตถุ และ, เมื่อผมเขียนval day = WeekDay.Monทำไมมันพิมพ์WeekDay.Valueไม่พิมพ์WeekDay?
122 scala  enums 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.