Câu hỏi này là vì lợi ích. Tôi đang làm việc với một thư viện của bên thứ ba và đã xem qua các tài liệu sau đây về một lớp CMS.Security.Dummy
:C# 4 có tối ưu hóa các không gian tên theo cách mà các phiên bản C# trước đó không?
KHÔNG DELETE CLASS NÀY - Lớp này ngăn cản việc biên dịch từ thả toàn bộ không gian tên dưới .NET 4.0.
Có ai biết hay không ai có thể suy đoán tại sao .NET 4 sẽ bỏ không gian tên nếu lớp giả đã bị xóa?
Vì .NET 4 được đặt tên rõ ràng trong nhận xét mã nguồn, tôi giả định các phiên bản C# trước đây thể hiện hành vi không yêu cầu lớp giả này. Đó hoàn toàn là suy đoán.
Screen bắn
decompiled Source Code
#region Assembly CMS.SettingsProvider.dll, v4.0.30319
// ...\solution\wwwroot\Bin\CMS.SettingsProvider.dll
#endregion
using System;
namespace CMS.Security
{
// Summary:
// DO NOT DELETE THIS CLASS - This class prevents the compiler from dropping
// entire namespace under .NET 4.0.
public class Dummy
{
// Summary:
// DO NOT DELETE THIS CLASS - This class prevents the compiler from dropping
// entire namespace under .NET 4.0.
public Dummy();
}
}
Sẽ rất thú vị nếu bạn thấy có điều gì giống như vậy trong phiên bản trước 4.0 của thư viện. – AakashM
Các không gian tên IIRC không tồn tại trong CIL dưới dạng các thực thể riêng biệt - chúng chỉ đơn giản trở thành một phần của tên loại đủ điều kiện. (AFAIK đó là đúng cho tất cả các phiên bản của CLI và không cụ thể cho .NET 4.) Theo nghĩa này tôi sẽ hỗ trợ câu trả lời của @Jon Skeet. – stakx
Một câu hỏi hay được nêu ra bởi một yêu cầu đáng ngờ :) –