Tôi đã phát triển cho windows mobile và android trong một thời gian. Và tôi bối rối về hai khái niệm này.Enum VS Static Class (Giá trị chuỗi thông thường và chuỗi giá trị)
Giả sử tôi muốn đưa ra quyết định dựa trên một số kích thước màn hình thiết bị của người dùng. Vì vậy, tôi sẽ mong đợi các giá trị được xác định trước. Tôi có thể sử dụng một tuyên bố chuyển đổi để xử lý logic của tôi. Nhưng tôi không chắc liệu tôi có nên sử dụng Enum của một lớp tĩnh cho mục đích này hay không. Cái nào là một cách tiếp cận tốt hơn. Tôi có thể làm logic của mình theo hai cách khác nhau. Cách nào đúng là cách tiếp cận? Tôi bối rối. Và tôi có thể sử dụng các giá trị String không? Bởi vì hiện tại tôi đang gắn bó với các lớp học, tôi cần phải cập nhật để sử dụng tất cả các enums. Vì vậy, Làm thế nào về việc thay đổi lớp của tôi để String Enum? Dù sao. Cảm ơn.
Sử dụng Enum
//My predefined values
public enum ScreenSizeEnum
{
Small, Medium, Large, XLarge,
}
//Handling Logic
private void SetScreenSize(ScreenSizeEnum Screen)
{
switch (Screen)
{
case ScreenSizeEnum.Large:
//Do Logic
break;
case ScreenSizeEnum.Small:
//Do Logic
break;
}
}
Sử dụng Lớp
//My predefined values
public class ScreenSizeClass
{
public const int Small = 0;
public const int Medium = 1;
public const int Large = 2;
public const int XLarge = 3;
}
//Handling Logic
private void SetScreenSize(int Screen)
{
switch (Screen)
{
case ScreenSizeClass.Large:
//Do Logic
break;
case ScreenSizeClass.Small:
//Do Logic
break;
}
}
Trải nghiệm gỡ lỗi với enums tốt hơn nhiều (ít nhất là trong C#). Hãy thử gỡ lỗi một công tắc với hàng trăm trường hợp chuyển sang mã 'int'. –
Có thẻ 'Java' trên câu hỏi này. Mã ví dụ bạn hiển thị cho 'enum' sẽ không hoạt động với Java. Enums trong Java không hoạt động giống như C# khi sử dụng 'switch'. – Squonk
Vâng. Tôi biết điều đó. Tôi đang làm chính xác cùng một dòng chảy trong ứng dụng Android của tôi. Tôi nghĩ rằng nó có thể là quá dài nếu tôi đặt mã java cũng. Nhưng tôi hy vọng khái niệm này là như nhau. –