- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - phát hiện rò rỉ bộ nhớ Ruby/Ruby on Rails
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我原以为对实现了 IEnumerable
的空集合执行以下代码会抛出异常:
var enumerator = collection.GetEnumerator();
enumerator.MoveNext();
var type = enumerator.Current.GetType(); // Surely should throw?
因为集合是空的,然后访问IEnumerator.Current
无效,我本以为会有异常(exception)。但是,Danh sách
不会抛出异常.
Đây làthe documentation for IEnumerator
允许的,其中指出 Hiện hành
在以下任何条件下未定义:
(我假设“未能抛出异常”可以归类为“未定义行为”...)
但是,如果您执行相同的操作但使用 IEnumerable
相反,你确实得到了一个异常(exception)。此行为由 the documentation for IEnumerator.Current
指定,其中指出:
我的问题是:为什么会有这种差异?是否有我不知道的充分的技术原因?
这意味着看似相同的代码可能会根据是否使用 IEnumerable
而表现出截然不同的行为。或 IEnumerable
, 如以下程序所示(注意 showElementType1()
Và showElementType1()
中的代码是如何相同的):
sử dụng Hệ thống;
sử dụng System.Collections;
sử dụng System.Collections.Generic;
namespace ConsoleApplication2
{
class Program
{
public static void Main()
{
var list = new List();
showElementType1(list); // Does not throw an exception.
showElementType2(list); // Throws an exception.
}
private static void showElementType1(IEnumerable collection)
{
var enumerator = collection.GetEnumerator();
enumerator.MoveNext();
var type = enumerator.Current.GetType(); // No exception thrown here.
Console.WriteLine(type);
}
private static void showElementType2(IEnumerable collection)
{
var enumerator = collection.GetEnumerator();
enumerator.MoveNext();
var type = enumerator.Current.GetType(); // InvalidOperationException thrown here.
Console.WriteLine(type);
}
}
}
câu trả lời hay nhất
IEnumerable
的问题是那个Hiện hành
类型为 T
. default(T)
is returned 而不是抛出异常(它是从 MoveNextRare
设置的)。
sử dụng IEnumerable
时你没有类型,你不能返回默认值。
实际问题是你没有检查 MoveNext
的返回值.如果它返回 SAI
, 你不应该调用 Hiện hành
.异常没关系。我认为他们发现返回 default(T)
更方便在IEnumerable
案例。
异常处理带来开销,返回default(T)
没有(那么多)。也许他们只是认为从 Hiện hành
返回没有任何用处。 IEnumerable
情况下的属性(property)(他们不知道类型)。该问题已在 IEnumerable
中“解决”使用 default(T)
giờ.
根据这个bug report (感谢 Jesse 发表评论):
For performance reasons the Current property of generated Enumerators is kept extremely simple - it simply returns the value of the generated 'current' backing field.
这可能指向异常处理开销的方向。或者需要额外的步骤来验证 hiện hành
的值.
他们实际上只是将责任推给了foreach
,因为那是枚举器的主要用户:
Các vast majority of interactions with enumerators are in the form of foreach loops which already guard against accessing current in either of these states so it would be wasteful to burn extra CPU cycles for every iteration to check for these states that almost no one will ever encounter.
关于c# - 为什么 IEnumerator.Current 的错误处理不同于 IEnumerator
Đối với Metal, nếu tôi ánh xạ kết cấu chính, tôi có cần ánh xạ kết cấu nhiều mẫu không? Tôi đã đọc tài liệu của Apple nhưng không nhận được bất kỳ thông tin liên quan nào. Câu trả lời hay nhất cho Mipmapping là câu trả lời bạn sẽ sử dụng
Mã tôi đang làm việc có Bộ điều khiển hiển thị GSP (Trang máy chủ Groovy) trong mã Groovy phụ trợ. Đối với giao diện người dùng, chúng tôi sử dụng React-router v4 để xử lý việc định tuyến. Vấn đề tôi đang gặp phải là, bởi
Chúng tôi đang xây dựng một trang web lớn. Chúng tôi đang xem xét nên thực hiện xử lý HTML ở phía máy chủ (ASP .Net) hay phía máy khách. Ví dụ: chúng tôi có các tệp HTML hoạt động giống như các mẫu để tạo tab. Nhận HT ở phía máy chủ
Tôi đang cố tải một hình ảnh vào một mảng trong void setup() nhưng khi thực hiện, tôi gặp lỗi này: xử lý "Loại không khớp, 'process.core.PImage' không khớp".
Tôi đang cố cập nhật thẻ khách hàng trên Shopify bằng ứng dụng riêng của họ. Tôi đã thử với người đưa thư và mọi thứ đều hoạt động tốt nhưng thông qua AJAX, tôi phải gọi lại thành công thay vì lỗi nhưng sau khi thành công, tôi nhận được liên kết xác thực thay thế
Làm cách nào để thay đổi biểu tượng mặc định được xuất bằng Đang xử lý appIconTest.exe trong ứng dụng cửa sổ? Mặc định: Câu trả lời hay nhất Sau một số nghiên cứu, giải pháp đơn giản nhất tôi có thể tìm thấy là: Đi vào ...\process
Tôi đã tạo một trò chơi nhỏ đơn giản trong Đang xử lý nhưng cần sự giúp đỡ. Tôi có một bản mp3 và muốn thêm nó vào ứng dụng của mình để lặp trong nền. Điều này có thể thực hiện được không? Cảm ơn bạn rất nhiều. Câu trả lời hay nhất Bạn có thể sử dụng thư viện âm thanh. Quá trình xử lý đã được bao gồm
Tôi có một số nút được tạo như thế này: Trong setup() PImage[] imgs1 = {loadImage("AREA1_1.png"),loadImage("AREA1_2.png"),loadImage
Tôi đang cố gắng tạo trò chơi nhiều người chơi bằng Xử lý nhưng không thể tìm ra cách chia màn hình thành hai để hiển thị các tình huống khác nhau cho người chơi? Giống như trong C# chúng ta có Viewport leftViewport, rightView
Tôi đã cố gắng sử dụng Vùng lân cận Moore để tạo các ô tự động di động trong quá trình xử lý và cho đến nay nó đã rất thành công. Tôi đã cố gắng làm cho hệ thống cơ bản hoạt động được và bây giờ tôi muốn nó hoạt động bằng cách thêm các tính năng khác nhau. Bây giờ, tôi kiểm tra xem các tế bào có còn sống hay không. Nếu vậy, tôi sử dụng điền
Có cách nào để kiểm tra việc sử dụng tài nguyên bằng mã JavaScript không? Tôi có thể kiểm tra mức sử dụng RAM và mức sử dụng CPU của tập lệnh không? Vì có nhiều cách để làm điều gì đó nên tôi có thể viết mã bằng các phương pháp khác nhau và lưu nó thành hai tệp khác nhau,
Tôi đang cố gắng tìm ra cách xử lý một danh sách như thế này: [ [[4,6,7], [1,2,4,6]] , [[10,4,2,4], [1] ] ] Đây là Danh sách các số nguyên. Tôi muốn hàm của mình lấy danh sách này làm đầu vào và trả về các số nguyên không trùng lặp trong danh sách
Có cách nào để xử lý MethodChannel/EventChannel khi không cần thiết không? Tôi hỏi vì tôi muốn tạo nhiều phương thức/kênh sự kiện cho một đối tượng. Ví dụ: lớp Gọi { ... trường
Tôi có câu hỏi về cách xử lý ConnectionResetError trong Python3. Điều này thường xảy ra khi tôi sử dụng hàm urllib.request.Request. Tôi muốn biết nếu chúng tôi gặp phải lỗi như thế này thì có được không
Tôi đã cố gắng tìm ra điều này trong vài giờ nhưng vô ích. Mã rất đơn giản, một quả bóng nảy (hạt). Việc khởi tạo vận tốc của hạt thành (0, 0) sẽ khiến nó nảy lên và xuống. Thay đổi vận tốc ban đầu của hạt thành (0, 0,01) hoặc bất kỳ số dấu phẩy động thập phân nào
Tôi đã tự làm mình rối tung lên. Tôi muốn thêm python3.6 vào hệ thống của mình nên tôi quyết định gỡ cài đặt cái hiện có trong Ubuntu 19.10. Nhưng bây giờ mỗi lần tôi muốn cài đặt thứ gì đó tôi lại gặp lỗi này: dpkg: error w
Tôi đang gặp khó khăn với chức năng NA trong gói Rpart. Tôi đã nhận được khung dữ liệu sau (mã bên dưới) Kết quả VarA VarB 1 1 1 0 2 1 1 1
Tôi đang sử dụng Java với JSF, là vùng chứa Glassfish 3. Trong ứng dụng web của mình, tôi đang cố gắng triển khai hệ thống quản lý tệp (hình ảnh). Tôi có một config.properties mà tôi đọc được từ quá trình tải lên
Vì vậy, tôi đã làm việc về Xử lý được vài tuần và mặc dù tôi không có kinh nghiệm lập trình nhưng tôi đã chuyển sang các dự án phức tạp hơn. Tôi đang viết một trình mô phỏng tiến hóa sinh ra các sinh vật có thuộc tính ngẫu nhiên. Cuối cùng, tôi sẽ thêm các bản sao, nhưng hiện tại các sinh vật chỉ lơ lửng trên màn hình
Có ai biết Delphi 2009 xử lý "với" khác nhau như thế nào không? Tôi đã giải quyết được sự cố ngày hôm qua bằng cách giải mã "with" thành tham chiếu đầy đủ như "với Datamodule, Dataset, MainForm".
Tôi là một lập trình viên xuất sắc, rất giỏi!