2012-06-06 38 views
48

Tôi đang thử mã sau đây. Dòng có lỗi được chỉ ra.Cách trả về một mảng chữ trong C#

int[] myfunction() 
{ 
    { 
     //regular code 
    } 
    catch (Exception ex) 
    {      
     return {0,0,0}; //gives error 
    } 
} 

Làm cách nào tôi có thể trả lại một mảng theo nghĩa đen như chuỗi ký tự chuỗi?

+0

Nó cũng đáng gì mà C# không thực sự có các mảng chữ, nhưng một cú pháp khởi tạo mảng - mà câu trả lời được chấp nhận đề cập đến. Các chữ viết đặc biệt ở chỗ chúng có thể được nối tiếp trực tiếp và có thể được gán cho các trường 'const'. Đây không phải là trường hợp với cú pháp khởi tạo mảng. –

Trả lời

99

Return một mảng của int như thế này:

return new int [] { 0, 0, 0 }; 

Bạn cũng có thể implicitly type the array - trình biên dịch sẽ suy ra nó phải được int[] vì nó chỉ chứa int giá trị:

return new [] { 0, 0, 0 }; 
+4

Woah ho, tôi không biết bạn có thể ngầm loại mảng! +1 –

+1

Tôi thấy rằng 'int mới [] {0,0,0}' cũng hoạt động. Nó sẽ rõ ràng hơn trong quan điểm của tôi. – sgarg

+0

@sgarg Điều đó có vẻ giống với câu trả lời. Và tôi không đồng ý, việc đánh máy ngầm của mảng có nghĩa là việc thay đổi hằng số thành dấu phẩy động sẽ tự động nhận được loại mảng chính xác. – NetMage

11

Blorgbeard là đúng, nhưng bạn cũng có thể nghĩ về việc sử dụng lớp .NET 4.0 Tuple mới. Tôi thấy nó dễ dàng hơn để làm việc với khi bạn có một số thiết lập của các mặt hàng để trở về. Như trong trường hợp bạn luôn cần trả về 3 mục trong mảng của bạn, một bộ 3-int làm cho nó rõ ràng nó là gì.

return new Tuple<int,int,int>(0,0,0); 

hoặc đơn giản là

return Tuple.Create(0,0,0); 
+2

Nếu bạn có một số mục khác nhau nhưng muốn có thêm một số chức năng, bạn cũng có thể làm: 'return new List (new int [] {0,0,0}); ' – Dave

+1

@Dave will' List (Enumerable .Repeat (0, 3)) 'tốt hơn? – NetMage

+0

@NetMage Sẽ tốt hơn nếu bạn muốn thay đổi số lượng mặt hàng, chắc chắn. – Dave

7

nếu mảng có kích thước cố định và bạn wante trở lại một cái mới đầy số không

return new int[3]; 
Các vấn đề liên quan