Cách trả về một ký tự mảng trong C #


87

Tôi đang thử mã sau. Dòng có lỗi được chỉ ra.

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

Làm cách nào tôi có thể trả về một ký tự mảng như chuỗi ký tự?


4
Cũng không có giá trị gì khi C # không thực sự có các ký tự mảng, mà là 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. Chữ viết đặc biệt ở chỗ chúng có thể được tuần tự hóa trực tiếp và có thể được gán cho constcác trường. Đây không phải là trường hợp của cú pháp khởi tạo mảng.
— cwharris

Câu trả lời:


164

Trả về một mảng intnhư thế này:

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

Bạn cũng có thể nhập ngầm mảng - trình biên dịch sẽ suy ra nó phải như int[]vậy vì nó chỉ chứa intcác giá trị:

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

6
Woah ho, tôi không biết bạn có thể ngầm nhập mảng! +1
— Chris Sinclair

1
Tôi thấy rằng nó new int [] {0,0,0}cũng hoạt động. Nó sẽ rõ ràng hơn theo ý kiến ​​của tôi.
— sgarg

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

12

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

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

hoặc đơn giản

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

2
Nếu bạn có một số biến các mặt hàng nhưng muốn thêm một số chức năng bạn cũng có thể làm:return new List<int>(new int[]{0,0,0});
— Dave

1
@Dave sẽ không List<int>(Enumerable.Repeat(0, 3))tốt hơn?
— NetMage

@NetMage Chắc chắn sẽ tốt hơn nếu bạn muốn thay đổi số lượng mục.
— Dave

9

nếu mảng có kích thước cố định và bạn muốn trả về một mảng mới chứa đầy số 0

return new int[3];
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.