2009-08-13 31 views
37

Cây trồng này sẽ tăng lên ngay bây giờ và sau đó đối với tôi: Tôi có một số mã C# rất mong muốn chức năng range() có sẵn bằng Python.Có tương đương với phạm vi Pythons (12) trong C# không?

Tôi biết sử dụng

for (int i = 0; i < 12; i++) 
{ 
    // add code here 
} 

Nhưng phanh này xuống trong tập quán chức năng, như khi tôi muốn làm một LINQ Sum() thay vì viết vòng lặp ở trên.

Có bất kỳ nội trang dựng sẵn nào không? Tôi đoán tôi luôn có thể cuộn của riêng mình với một yield hoặc như vậy, nhưng điều này sẽ là vì vậy tiện dụng chỉ với .

+0

Nó không phải là Enumeration.Range, nó là Enumerable.Range. –

+0

đã sửa nó. cảm ơn. –

Trả lời

72

Bạn đang tìm kiếm phương pháp :

var mySequence = Enumerable.Range(0, 12); 
+1

Lưu ý: điều này yêu cầu System.Linq và C# 3.0. – crb

+0

crb: C# 3 là không bắt buộc. Bạn có thể sử dụng lớp này từ C# 2 nhưng bạn cần tham khảo System.Core có trong khung công tác .NET 3.5. –

+5

Điều này gây nhầm lẫn vì tôi tin rằng phiên bản của Python là '(bắt đầu, kết thúc)' trong đó phiên bản .NET là '(bắt đầu, đếm)' - đừng mắc sai lầm khi trộn chúng lên! – jocull

6
Enumerable.Range(start, numElements); 
5

Enumerable.Range (0,12);

13

Chỉ để bổ sung cho câu trả lời của mọi người, tôi nghĩ rằng tôi nên thêm rằng Enumerable.Range(0, 12); là gần gũi hơn với Python 2.x của xrange(12) bởi vì nó là một enumerable.

Nếu bất cứ ai đòi hỏi đặc biệt một danh sách hoặc một mảng:

Enumerable.Range(0, 12).ToList(); 

hoặc

Enumerable.Range(0, 12).ToArray(); 

là gần gũi hơn với Python của range(12).

Các vấn đề liên quan