Tôi nghe nói rằng làm tổ của enum
là không thể trong C#. Sau đó, làm thế nào có thể chuyển đổi các cấu trúc sau đây để một hệ thống phân cấp lớp hoặc cái gì khác. Vì vậy, tôi muốn các lớp để hoạt động như một enum
lồng nhau enum trong C# và các lớp học
Trả lời
lớp lồng nhau và các lĩnh vực const
class Cat1
{
public const int Public = 1;
public class Private
{
public const int Abc = 2;
public const int Mno = 3;
public const int Pqr = 4;
}
}
Và trong khi bạn đang ở đó, đánh dấu các lớp tĩnh. – ver
Đáng chú ý biến sẽ chỉ là một 'int', vì vậy có thể nhận được một giá trị không hợp lệ từ một nơi khác. –
bạn có thể sử dụng hirerchy như cấu trúc lớp, mà mỗi lớp có một tài sản của riêng của mình enum
public class Cat1
{
public enum Publicpart
{
Xyz
}
private enum Privatepart
{
Abc, Mno, Pqr
}
}
sau đó bạn có thể gọi nó như thế này
Cat1.Publicpart.Xyz
hoặc nếu bạn có acces tin
Cat1.Privatepart.Abc
Bạn nên suy nghĩ lại nếu bạn muốn giải quyết vấn đề này thông qua enums vì loại enum đầu tiên đại diện cho tôi một số loại "tầm nhìn" khái niệm trong khi loại thứ hai là chỉ hợp lệ các trường hợp có khả năng hiển thị "công khai".
gì về cách giải quyết vấn đề của bạn với một cái gì đó như thế này:
public enum Visibility
{
Public,
Private
}
public abstract class VisibilityState
{
public Visibility Visibility { get; private set; }
protected VisibilityState(Visibility visibility)
{
Visibility = visibility;
}
}
public class PublicVisibilityState : VisibilityState
{
public PublicVisibilityState() : base(Visibility.Public) { }
}
public class PrivateVisibilityState : VisibilityState
{
public PrivateVisibilityState() : base(Visibility.Private) { }
public OtherEnum OtherEnumState { get; set; }
}
public enum OtherEnum
{
Abc, Mno, Pqr
}
- 1. .NET XmlSerializer và các lớp lồng nhau trong C#
- 2. C# Nối tiếp các lớp lồng nhau
- 3. Các lớp học PHP lồng nhau hoạt động ... sắp xếp?
- 4. Lớp địa phương, lớp bên trong và lớp lồng nhau có giống nhau trong C++ không?
- 5. Cách thiết kế các lớp mẫu lồng nhau trong đó các lớp lồng nhau cùng loại
- 6. Chuyển tiếp tuyên bố lồng nhau enum
- 7. Các lớp lồng nhau riêng
- 8. Các lớp CSS lồng nhau
- 9. Lambda với các lớp lồng nhau
- 10. Java: lớp lồng nhau và phản chiếu tĩnh: "$" so với "."
- 11. Ràng buộc một ComboBox vào một enum lồng trong một lớp học
- 12. Sử dụng một enum lồng nhau trong GWT-RPC
- 13. operator << (ostream &, X) cho lớp X lồng nhau trong một lớp học mẫu
- 14. Java: Các lớp lồng nhau không tĩnh và instance.super()
- 15. Phạm vi của các lớp lồng nhau?
- 16. Sử dụng siêu() trong các lớp lồng nhau
- 17. Lớp lồng nhau Javascript
- 18. Java: giới hạn các lớp lồng nhau?
- 19. Cấu trúc lồng nhau trong C và C++
- 20. Mangle lớp lồng nhau và biến với uglifyjs
- 21. Tham khảo kiểu enum lồng nhau từ XAML
- 22. Làm thế nào để tạo một lớp học với các đối tượng lồng nhau Parcelable
- 23. nhập tĩnh trong C++ 11 (ví dụ một lớp enum)
- 24. Có cách nào để đặt trước các lớp lồng nhau trong C++ không?
- 25. C++ lớp lồng nhau tuyên bố mong lỗi
- 26. Đang cố gắng nhập các loại lồng nhau từ lớp
- 27. Lớp lồng nhau bên trong giao diện
- 28. Sử dụng enum datatype tuyên bố trong một lớp học trong Objective C
- 29. Mở rộng enum trong các lớp thừa
- 30. Phạm vi trong các lớp học coffeescript
những gì đã bạn đã cố gắng cho đến nay? nó có hoạt động không? nếu không, nó phải làm gì? – Alex
Bạn có nghĩa là một enum hoặc enumerable? Ở trên trông giống như một cái gì đó mà sẽ được mô hình hóa bởi một enumerable hơn bởi một enum. –
Câu hỏi này cũ, nhưng tôi đã đưa ra một gợi ý (trên dự án roslyn github) để thực hiện tính năng này trong các phiên bản tiếp theo của C# http://github.com/dotnet/roslyn/issues/13192 – lmcarreiro