2015-10-17 14 views
15

Vì vậy, tôi có một lớp học khá đơn giản với một trường IdId có thể được đặt trong hàm tạo.Đây có phải là sự đơn giản hóa không?

Thông thường tôi sẽ sử dụng this để xác định rõ ràng thuộc tính lớp như trái ngược với đối số phương thức. Với tôi điều này có vẻ rõ ràng hơn.

IDE0003 muốn tôi xóa this, với thông báo 'Tên có thể được đơn giản hóa', điều đó có đúng không?

Điều này dường như ít rõ ràng đối với tôi và cũng cho phép lỗi vỏ để dễ dàng dẫn đến id = id.

enter image description here

+15

Vâng, tôi nghĩ bạn đã nói lên tất cả: Không phải tất cả 'đơn giản hóa' cũng là một 'làm rõ' .. – TaW

+1

tôi nghĩ rằng cả hai đều biên dịch vào điều tương tự. vì vậy bạn chỉ đơn giản hóa những gì bạn đã viết không có gì khác. –

+5

Hmm, các loại câu hỏi này dường như chỉ được hỏi bởi các lập trình viên sử dụng nền cửa sổ trình soạn thảo màu đen. Vâng, bóng đèn đó là khá rõ ràng. Dễ dàng hơn nhiều để không bị làm phiền bởi nó khi nền là ánh sáng :) Chắc chắn nó là một "đơn giản hóa", có ít mã. Nhưng nó hoàn toàn không có sự khác biệt trong thời gian chạy và nó chắc chắn không giúp bạn sử dụng tự động hoàn thành. –

Trả lời

7

Các this từ khóa hầu như luôn luôn là không cần thiết, xem When do you use the "this" keyword?.

cho phép một lỗi vỏ dễ dàng dẫn đến id = id

Điều đó sẽ mang lại một cảnh báo ngày của riêng mình:

Chuyển nhượng thực hiện để cùng biến; bạn có ý định gán cái gì khác không?

+2

C# phân biệt chữ hoa chữ thường.Trong trường hợp này nó thực sự sẽ là một đơn giản hóa để loại bỏ điều này. –

4

Nếu bạn sử dụng General Naming Conventions thì từ khóa this là không cần thiết vì các tham số nên id và tài sản nên được Id dựa trên Naming Guidelines. Vì vậy, nó có vẻ rõ ràng:

public int Id 
{ 
    get; 
    private set; 
} 


public VSOMessage(int id) 
{ 
    Id = id; 
} 

Xin lưu ý rằng các hướng dẫn riêng của mình không nói, để sử dụng hoặc không sử dụng this từ khóa nhưng vì C# là trường hợp nhạy cảm, nó sẽ là một việc đơn giản hóa để loại bỏ this từ khóa nhưng khi bạn không sử dụngQuy ước đặt tên thì bạn có thể đặt tên cho thuộc tính id thay vì Id để bạn nên sử dụng từ khóa this trong các trường hợp như vậy.

+2

Từ khóa ['this'] (https://msdn.microsoft.com/en-us/library/dk1507sz.aspx) rõ ràng hữu ích cho kịch bản này:" Để đủ điều kiện thành viên ẩn theo tên tương tự ". Bên cạnh đó, không phải mọi biến thành viên đều là thuộc tính và một số thuộc tính có thể có biến số sao lưu (đặc biệt hữu ích cho các đối tượng không thay đổi). Ngoài ra, sử dụng 'this',' base' và tên lớp cho các phương thức tĩnh sẽ cải thiện khả năng đọc và củng cố ý định. – ShooShoSha

29

Câu hỏi khác này có câu trả lời cho biết bạn có thể định cấu hình trình chỉnh sửa để xóa hành vi. Cá nhân tôi thích "này"

Tools > Options > Text Editor > C# > Code Style and check Qualify member access with 'this' 

Visual Studio 2015 - Change Light Bulb, Quick Action settings

+6

Sử dụng từ khóa 'this' sẽ tiết lộ rõ ​​ràng nơi biến tồn tại. Nếu nó không được bắt đầu bằng 'this',' base', hoặc tên của lớp (đối với các phương thức tĩnh), phạm vi của biến là local và global như một phương thức. Điều này làm cho ý định và khả năng đọc rõ ràng hơn là thiếu sót của nó. – ShooShoSha

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