2012-08-24 18 views
6

Tôi đã từng bước qua .Net Framework mã nguồn để tìm một lỗi phức tạp (HttpApplication.cs), và tôi nhận thấy các dòng như những trong các mã (đây là những sao chép/bột nhão, tôi không chỉnh sửa bất cứ điều gì):Tên biến lạ (_ [....]) trong .Net Mã nguồn (HttpApplication.cs)

_[....] = true; 

_[....] = false; 

tôi đang tự hỏi nếu điều này là obfuscated mã, hoặc đây là một số loại C# quy ước tôi chưa từng thấy trước đây? VS 2012 dường như nghĩ rằng mã không thực sự của nó.

Ai đó có thể khai sáng cho tôi không?

+0

Nghĩa đen '....' hoặc ...? Dù sao, nó trông obfuscated. – Ryan

+0

Hoặc mã này đã được thông qua một obfuscator, hoặc nó đã được viết bởi một lập trình viên nên được sa thải từ bất cứ công ty sản xuất mã :) – dasblinkenlight

+0

dòng là nghĩa đen là dán. Trên thực tế, một khai báo ở đầu tệp, 'private bool _ [...]; ' –

Trả lời

8

Tên của trường như nó tồn tại trong mã HttpApplication.cs thực tế là "_sync". Có một công cụ tự động chạy trên nguồn trước khi nó đi ra công chúng; công cụ này tẩy sạch những thứ như tên của các nhà phát triển, v.v. Có vẻ như đây chỉ là một kết quả dương tính giả. Tôi sẽ đưa nó lên với nhóm thích hợp để xem liệu nó có thể được sửa chữa không.

0

Bạn có quyền mã nguồn bao gồm biến boolean có tên _[....]. Tôi đoán tên của biến không thể được quyết định tại thời điểm mã được viết; và nó đã bị lãng quên sau đó. http://reflector.webtropy.com/default.aspx/Net/Net/[email protected]@[email protected]/DEVDIV/depot/DevDiv/releases/whidbey/netfxsp/ndp/fx/src/xsp/System/Web/[email protected]/10/[email protected]

+0

nhưng AFAIK không biên dịch (_ [....] không phải là tên biến hợp lệ) –

+1

@ MalcolmO'Hare: Microsoft có thể có tiền xử lý tùy chỉnh như là một phần của tập lệnh xây dựng của họ. – Brian

1

Mã thông báo đặc biệt này dường như hiển thị trên tất cả hơn mã nguồn tham chiếu .NET. Nó thường được sử dụng nhiều trong các nhận xét hơn là một biến, nhưng HttpApplication.cs không phải là nơi duy nhất nó xuất hiện (ví dụ: WeakKeyDictionary sử dụng nó như là một mục tiêu lock)

Trong nhiều trường hợp. đó là một từ đồng nghĩa với từ "đồng bộ", như trong:

InstancePersistenceContext.cs:1586: Fx.AssertAndThrowFatal(this.context.Active, 
    "Out-of-[....] between InstanceExecutionContext and ExecutionAsyncResult."); 

EditModeSwitchButton.cs:64: // [....] to the owning PropertyContainer only if requested to do so 

và yêu thích của tôi, từ một System.Web.Mobuile lớp lạc hậu:

TemporaryBitmapFile.cs: private void [....]() 

My tốt nhất đoán như nó đến từ đâu là đó là bước xuất bản trước được thực hiện trên mã nguồn trước khi nó được phát hành ra công chúng (xuất hiện trong mọi bản sao của nguồn tham khảo mà tôi đã tìm thấy, nhưng không phải là SSCLI đã được phát hành một thời gian trở lại. , RemotingProxy.cs:222:

SSCLI: int callType = Message.Sync; 
RefSec: int callType = Message.[....];