2010-03-13 39 views
5

Trong phương pháp sau đây,Sử dụng const trong một phương pháp

public void InspectList(IList<int> values) 
{ 
    if(values != null) 
    { 
     const string format = "Element At {0}"; 
     foreach(int i in values) 
     { 
      Log(string.Format(format, i)); 
     } 
    } 
} 

Liệu việc sử dụng const cung cấp bất kỳ lợi ích hơn chỉ cần khai báo chuỗi như là một chuỗi? Woudl nó không được interned anyway?

Trả lời

4

Đúng, trong cả hai trường hợp, nó sẽ được thực tập.

Đánh dấu là const làm cho ý nghĩa của bạn rõ ràng hơn - do not touch this string variable, do not assign a different value to it.

1

Sau đây là cách mã cuối cùng của bạn sẽ trông như thế nào trong hai trường hợp:

  • Sử dụng const:

    public void InspectList(IList<int> values) 
    { 
        if(values != null) 
        { 
         foreach(int i in values) 
         { 
          Log(string.Format("Element At {0}", i)); 
         } 
        } 
    } 
    
  • Nếu không có const:

    public void InspectList(IList<int> values) 
    { 
        if(values != null) 
        { 
         string format = "Element At {0}"; 
         foreach(int i in values) 
         { 
          Log(string.Format(format, i)); 
         } 
        } 
    } 
    

Vì vậy, trong trường hợp thứ hai bạn sẽ có thêm biến cục bộ được khai báo, nhưng IMHO sự khác biệt sẽ là vi mô.

+2

Điều đó phụ thuộc vào trình tối ưu hóa. Im Đoán rằng trình biên dịch MS C# hiện tại sẽ mang lại một kết quả tương tự như của bạn nhưng im không chắc chắn về bất kỳ sự khác biệt nào trong mã nhị phân kết quả sau khi mã IL đã được biên dịch –

1

Có nhiều lý do tại sao tuyên bố thứ gì đó không đổi như const. Trước hết nó nói với bất kỳ ai Đọc mã mà giá trị sẽ giữ nguyên, rằng udentifier chỉ đơn giản là một bí danh cho giá trị đó. Thứ hai, một trình tối ưu hóa sẽ có một công việc dễ dàng hơn để tìm ra nếu giá trị của một số nhận dạng có thể đã thay đổi giữa hai lần đọc. Tuyên bố rằng chi phí làm cho nó rất dễ dàng vì nó không thể thay đổi. Với tôi lý do cũ là quan trọng hơn. Viết mã rõ ràng cho thấy ý định là với tôi một trong những thói quen quan trọng nhất mà một nhà phát triển có thể có.

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