2009-12-26 2 views
16

Tôi đang làm việc trên cơ bản Battleship game để giúp các kỹ năng C# của tôi. Ngay bây giờ tôi đang gặp một chút rắc rối với enum. Tôi có:Lấy giá trị số nguyên từ enum

enum game : int 
{ 
    a=1, 
    b=2, 
    c=3, 
} 

Tôi muốn người chơi chuyển đầu vào "C" và một số mã trả lại số nguyên 3. Làm thế nào tôi sẽ thiết lập nó cho nó để có một chuỗi var (string pick;) và chuyển đổi nó vào đúng int bằng cách sử dụng enum này? Cuốn sách tôi đang đọc về điều này có chút bối rối

+2

Đó là thực tế xấu để sử dụng enums với các loại cơ bản khác với 'int' và 'int' là mặc định, vì vậy bạn không cần phải làm cho nó rõ ràng . Chỉ cần nói. –

+2

không phải là câu hỏi của bạn "nhận giá trị enum từ một chuỗi"? – knoopx

Trả lời

39

Chỉ phân tích chuỗi và truyền thành int.

var number = (int)((game) Enum.Parse(typeof(game), pick)); 
+0

hoạt động nhờ tuyệt vời – Anthony

+0

Tôi thấy một hiệu ứng tương tự với biểu thức chọn (int) (trò chơi) –

+1

'Chọn' ở đây là gì? – gdmanandamohon

4

chỉ cần soạn thảo?

int a = (int) game.a 
+0

Không - đây không phải là những gì OP đang tìm kiếm. – Jeff

+0

Chính xác những gì tôi cần, cảm ơn! – Jamie

12
// convert string to enum, invalid cast will throw an exception 
game myenum =(game) Enum.Parse(typeof(game), mystring); 

// convert an enum to an int 
int val = (int) myenum; 

// convert an enum to an int 
int n = (int) game.a; 
3

Nếu bạn không chắc chắn rằng chuỗi đến sẽ chứa một giá trị enum hợp lệ, bạn có thể sử dụng Enum.TryParse() để cố gắng thực hiện phân tích cú pháp. Nếu nó không hợp lệ, điều này sẽ chỉ trả về false, thay vì ném một ngoại lệ.

jp

0

Câu trả lời là tốt nhưng cú pháp là lộn xộn.

Hầu gọn gàng là một cái gì đó như thế này:

public DataSet GetBasketAudit(enmAuditPeriod auditPeriod) 
    { 
     int auditParam =Convert.ToInt32(auditPeriod) ;