2011-03-04 43 views
8

Có sự khác biệt giữa truy cập vào một tài sản mà có một lĩnh vực sao lưuTại sao ReSharper cần phải quét tất cả các tệp khi chuyển đổi thuộc tính sang thuộc tính tự động?

private int _id; 
    public int Id 
    { 
     get { return _id; } 
     set { _id = value; } 
    } 

so với một tính năng tự động bất động sản?

public int Id { get; set; } 

Lý do tôi đang hỏi là khi để cho ReSharper chuyển đổi một tài sản vào một tài sản tự động có vẻ như để quét toàn bộ giải pháp của tôi, hoặc ít nhất là tất cả aspx-files.

Tôi không thể thấy bất kỳ lý do gì nên có sự khác biệt giữa hai bên ngoài lớp học. Lanhung?

Trả lời

12

Trình biên dịch tạo trường sao lưu cho Tự động Thuộc tính một cách tự động, vì vậy không, không nên có bất kỳ sự khác biệt nào.

ReSharper đang quét tất cả các tệp, vì nếu bạn đã xác định lớp Partial, có thể sử dụng trường sao lưu thay vì thuộc tính công khai ngay cả khi mã tồn tại trong các tệp khác nhau.

Ví dụ:

// MyClass.cs 
public partial class MyClass 
{ 
    int _id; 
    public int ID { get { return _id; } set { _id = value; } } 
    public MyClass(int identifier) 
    { 
     ID = identifier; 
    } 
} 

// MyClass2.cs 
public partial class MyClass 
{ 
    public void ChangeID(int newID) 
    { 
     _id = newID; 
    } 
} 

ReSharper phải quét tất cả các file, vì nó không có cách nào để biết được nơi một lớp học phần có thể được xác định.

+1

+1 làm cho cảm giác hoàn hảo tại sao OP sẽ nói nó đang quét ASPX.CS của mình vì tất cả chúng đều là một phần và mã được đề cập rất có thể là page.aspx.cs nơi thuộc tính được xác định và do đó một phần. –

+1

+1 - Suy nghĩ tốt! – BFree

+0

Lời giải thích thực sự tốt đẹp, tôi gần như đã sẵn sàng để hỏi OP liệu anh ấy có chắc chắn nếu ReSharper thực sự làm điều đó – Dyppl

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