2008-08-06 18 views
177

Bằng cách "tạo", tôi có nghĩa là tạo mã tự động cần thiết cho một biến (bộ) được chọn cụ thể.Cách tạo getters và setters trong Visual Studio?

Nhưng mọi lời giải thích hoặc nhận xét rõ ràng hơn về thực hành tốt đều được hoan nghênh.

Trả lời

237

Thay vì sử dụng ctrl +k, x bạn cũng có thể chỉ cần gõ prop và sau đó tab nhấn hai lần

+65

Và đừng quên "propg" + tab tạo ra giống nhau, nhưng với một setter riêng. –

+0

hoàn toàn tiện lợi. Cảm ơn! – Stumblor

+0

Xem https://msdn.microsoft.com/en-us/library/z41h7fat.aspx để biết các đoạn mã hữu ích hơn trong Visual C# – Titus

1

Tôi không có Visual Studio được cài đặt trên máy của mình nữa (và tôi đang sử dụng Linux), nhưng tôi nhớ rằng có một trình hướng dẫn ẩn ở đâu đó bên trong một trong các menu đã cấp quyền truy cập cho trình tạo lớp.

Với thuật sĩ này, bạn có thể xác định tất cả chi tiết của lớp học, bao gồm các phương pháp và thuộc tính. Nếu tôi nhớ rõ, có một tùy chọn mà qua đó bạn có thể yêu cầu VS tạo các bộ định vị và getters tự động cho bạn.

Tôi biết nó khá mơ hồ, nhưng hãy kiểm tra và bạn có thể tìm thấy nó.

29

Bằng cách tạo, bạn có nghĩa là tự động tạo không? Nếu đó không phải là những gì bạn có nghĩa là:

Visual Studio 2008 có việc thực hiện đơn giản nhất cho việc này:

public PropertyType PropertyName { get; set; } 

Trong bối cảnh này tạo ra một biến Ví dụ ngụ ý mà tài sản của bạn được lưu trữ và lấy ra.

Tuy nhiên nếu bạn muốn đặt trong logic hơn trong Thuộc tính của bạn, bạn sẽ phải có một biến Ví dụ cho nó:

private PropertyType _property; 

public PropertyType PropertyName 
{ 
    get 
    { 
     //logic here 
     return _property; 
    } 
    set 
    { 
     //logic here 
     _property = value; 
    } 
} 

Các phiên bản trước của Visual Studio luôn sử dụng phương pháp longhand này là tốt.

+0

Không phải là tiêu chuẩn trong C# là dấu gạch ngang thấp hơn sau tên thành viên 'property_' thay vì trước' _property'? – Julen

+1

@Julen - Tôi luôn thấy quy ước _property. –

7

Nếu bạn đang sử dụng Visual Studio 2005 trở lên, bạn có thể tạo một setter/getter thật nhanh bằng cách sử dụng lệnh chèn đoạn mã. Nhấp chuột phải vào mã của bạn nhấp vào Chèn đoạn mã (Ctrl + k, x) và sau đó chọn "chống đỡ" tạo danh sách. Hi vọng điêu nay co ich.

46

Visual Studio cũng có một tính năng mà sẽ tạo ra một tài sản từ một biến tư nhân.

Nếu bạn nhấp chuột phải vào biến, trong menu ngữ cảnh bật lên, nhấp vào mục "Refactor". Sau đó chọn trường đóng gói. Điều này sẽ tạo một thuộc tính getter/setter cho một biến.

Tôi không phải là một fan hâm mộ của kỹ thuật này vì nó hơi khó xử dụng nếu bạn phải tạo ra rất nhiều getters/setters, và nó đặt thuộc tính trực tiếp bên dưới trường riêng tư, vì tôi thường có tất cả các trường riêng của mình được nhóm lại với nhau và tính năng Visual Studio này phá vỡ định dạng của lớp học của tôi.

+10

Thật không may, tùy chọn này không được đưa ra bởi các phiên bản Express của Visual Studio. – Toby

+11

cũng có shourtcut nữa - tôi thích cách này :) - CTRL + R + E – Vukasin

+1

"Tùy chọn không được đưa ra bởi các phiên bản thể hiện" - Oh người đàn ông, họ đã không cung cấp cho bạn một sản phẩm hoàn chỉnh miễn phí? MS, những tên khốn đó. –

1

Ngoài đoạn mã 'prop' và các thuộc tính tự động, có một tùy chọn tái cấu trúc để cho phép bạn chọn một trường hiện có và hiển thị nó thông qua thuộc tính. Ngoài ra, nếu bạn không thích triển khai 'chống đỡ', bạn có thể tạo đoạn trích của riêng mình. Ngoài ra, công cụ tái cấu trúc bên thứ 3 như tính năng chia sẻ lại sẽ cung cấp cho bạn nhiều tính năng hơn và giúp tạo các đoạn mã nâng cao hơn dễ dàng hơn. Tôi khuyên bạn nên Resharper nếu bạn có thể đủ khả năng đó.

http://msdn.microsoft.com/en-us/library/f7d3wz0k(VS.80).aspx http://www.jetbrains.com/

4

Nếu bạn đang sử dụng ReSharper, đi vào menu ReSharper -> Code -> Tạo ... (hoặc nhấn Alt + Ins bên trong lớp xung quanh) và bạn sẽ nhận được tất cả các tùy chọn để tạo getters và/hoặc setters mà bạn có thể nghĩ đến :-)

25

bạn cũng có thể sử dụng "propfull" và nhấn TAB hai lần, biến và thuộc tính với get và set sẽ được tạo.

+0

đây là một trong những hữu ích hơn và tôi luôn luôn quên nó –

+0

Tôi đang làm serialization XML và sinh sản một tấn tài sản trên tất cả các hiển thị. + 100 nghìn lần upvotes nếu tôi có thể. Cảm ơn! Edit- EVEN BETTER, autohotkey script +^this = năng suất hơn 90000! – Eon

3

sử dụng từ khóa propfull.
Nó sẽ tạo thuộc tính và biến

+0

xin vui lòng cung cấp thêm thông tin về câu trả lời của bạn, câu trả lời với mô tả ngắn không phải là OK cho khách truy cập tiếp theo ... – Kiyarash

+0

loại từ khóa propfull trong trình soạn thảo nó sẽ tạo ra mã như dữ liệu cá nhân_type var_name; dữ liệu công khai_type var_name1 {get; set;} –

2

Tôi biết điều này cũ hơn mặt trời, nhưng tôi đoán rằng tôi sẽ đăng câu trả lời này bởi vì nó giống như làm theo cách này.

Điều tôi đã làm là tạo đoạn mã của riêng tôi CHỈ thêm {get; set;}. Tôi đã thực hiện nó chỉ vì tôi tìm thấy prop > tab để được clunky.

<?xml version="1.0" encoding="utf-8"?> 
<CodeSnippets 
xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> 
    <CodeSnippet Format="1.0.0"> 
    <Header> 
     <Title>get set</Title> 
     <Shortcut>get</Shortcut> 
    </Header> 
    <Snippet> 
     <Code Language="CSharp"> 
      <![CDATA[{get; set;}]]> 
     </Code> 
    </Snippet> 
    </CodeSnippet> 

Với điều này, bạn nhập PropType và PropName theo cách thủ công, sau đó nhập get > tab và nó sẽ thêm bộ nhận. Nó không có gì huyền diệu, nhưng kể từ khi tôi có xu hướng gõ sửa đổi truy cập của tôi đầu tiên anyway, tôi cũng có thể hoàn thành ra tên và loại.

27

Tôi sử dụng Visual Studio 2013 Professional.

  • Đặt con trỏ của bạn ở dòng của biến mẫu.

    enter image description here

  • Nhấn kết hợp phím Ctrl + R, Ctrl +E hoặc nút chuột phải Click, Chọn menu ngữ cảnh Refactor \ Encapsulate Field... sau đó nhấn OK.

    enter image description here

  • Trong Preview Reference Changes - Encapsulate Field diaglog, nhấn nút Apply.

    enter image description here

  • Đây là kết quả:

    enter image description here



Bạn cũng nơi con trỏ cho việc lựa chọn tài sản, sử dụng menu Sửa \ Refactor \ Encapsulate Field ...

private int productID; 

public int ProductID 
{ 
    get { return productID; } 
    set { productID = value; } 
} 

trở để

public int ProductID { get; set; } 
1

Trong Visual Studio Community Edition 2015 bạn có thể chọn tất cả các trường bạn muốn và sau đó nhấn ctrl + . để tự động tạo thuộc tính. Bạn phải chọn nếu bạn muốn sử dụng thuộc tính thay cho trường đó hay không.

0

enter image description here thay mặt cho công cụ studio trực quan, chúng tôi có thể dễ dàng tạo các thuộc tính C# bằng cách sử dụng công cụ trực tuyến được gọi. c# propery generator.

0

Bạn chỉ cần đơn giản bấm Alt +Ins trong studio android sau khi tuyên bố các biến, bạn sẽ nhận được getter và setter trong việc tạo mã.