我们如何在Visual Studio中生成getter和setter?


226

所谓“生成”,是指自动生成特定选择的(一组)变量所必需的代码。

但是,欢迎您对良好做法进行更明确的说明或评论。

Answers:



51

Visual Studio还具有将从私有变量生成属性的功能。

如果右键单击变量,则在弹出的上下文菜单中,单击“重构”项目,然后选择“ 封装字段...”。这将为变量创建一个getter / setter属性。

我不太喜欢这种技术,因为如果您必须创建大量的getter / setter,那么使用它会有点尴尬,并且它将属性直接放在私有字段的下面,这使我感到烦恼,因为我通常将我所有的私有字段组合在一起,并且此Visual Studio功能破坏了我班级的格式。


10
不幸的是,Visual Studio的快速版本没有提供此选项。
Toby

12
也有scuttcut-我喜欢这种方式:)-CTRL + R + E
Vukasin

32

我使用Visual Studio 2013专业版。

  • 将光标置于实例变量的行。

    在此处输入图片说明

  • 按组合键Ctrl+ RCtrl+ E或单击鼠标右键。选择上下文菜单Refactor封装字段...,然后按OK

    在此处输入图片说明

  • 在“ 预览参考更改-封装字段”对话框中,按按钮Apply

    在此处输入图片说明

  • 结果是:

    在此处输入图片说明



您还可以放置光标以选择属性。使用菜单编辑重构封装字段...

  • 其他信息:

    从C#3.0(2007年11月19日)开始,我们可以使用自动实现的属性(这仅仅是语法糖)。

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

    变成

    public int ProductID { get; set; }

30

所谓生成,是指自动生成吗?如果这不是您的意思:

Visual Studio 2008为此提供了最简单的实现:

public PropertyType PropertyName { get; set; }

在后台,这将创建一个隐式实例变量,您的属性将存储到该实例变量中并在其中检索。

但是,如果要在“属性”中添加更多逻辑,则必须为其提供一个实例变量:

private PropertyType _property;

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

Visual Studio的早期版本也始终使用这种手动方法。


难道C#中的标准property_不是在成员名称后面而不是之前的短划线_property吗?
Julen

2
@Julen-我一直都看过_property约定。
内森·德威特

27

您也可以使用“ propfull”并点击TAB两次。

将生成带有get和set的变量和属性。


这是更有用的方法,我总是忘记了
Dave Alperovich

我正在进行XML序列化,并在整个显示过程中产生了大量属性。如果可以的话,可以增加+100亿的支持。谢谢!编辑-更好,自动热键脚本+ ^ this =超过90000的生产力!
2014年

演示在4分11秒时使用摘要“ propfull”(以及其他内容)的视频
彼得·莫滕森

6

如果您使用的是Visual Studio 2005及更高版本,则可以使用insert snippet命令快速创建一个setter / getter。

右键点击您的代码,然后点击插入代码段Ctrl+KX),然后从列表中选择“ prop”。


4

如果您使用的是ReSharper,请进入ReSharper菜单→ 代码生成...

(或者在周围的类中按Alt+键Ins),您将获得所有可以想到的生成getter和/或setter的选项:-)


3

使用propfull关键字。

它将生成一个属性和一个变量。

propfull在编辑器中键入关键字,后跟两个TAB。它将生成如下代码:

private data_type var_name;

public data_type var_name1{ get;set;}

演示在4分11秒时使用摘要“ propfull”(以及其他内容)的视频


2
请提供有关您的答案的更多信息,简短说明的答案不适合下一位访客...
Kiyarash 2014年

在编辑器中输入关键字propfull会生成类似private data_type var_name的代码;public data_type var_name1 {get; set;}
avinash kadu 2014年

您可以为“ propfull”添加参考(通过编辑答案,而不是在注释中)吗?
彼得·莫滕森

3

我创建了添加的自己的代码段{get; set;}。我之所以这样做,是因为我发现propTab笨拙。

<?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>
</CodeSnippets>

这样,您可以手动键入PropType和PropName,然后键入getTab,它将添加获取集。这没什么神奇的,但是既然我还是倾向于先输入访问修饰符,那么我不妨整理一下名称和类型。


2

在Visual Studio社区版2015中,您可以选择所需的所有字段,然后按Ctrl+ .自动生成属性。

您必须选择是否要使用属性而不是字段。


1

除了“ prop”片段和自动属性之外,还有一个重构选项,可让您选择现有字段并通过属性公开它(右键单击该字段→ 重构封装字段...)。

另外,如果您不喜欢“ prop”实现,则可以创建自己的代码段。此外,第三方重构工具(例如ReSharper)将为您提供更多功能,并使创建更高级的代码片段更加容易。如果可以的话,我建议ReSharper。


第一个链接重定向到Visual Studio 2005退休文档。它指的是十个中的哪个?大概是对如何在Visual Studio中使用代码段的描述。
彼得·莫滕森

1

在Visual Studio 2019中,像这样选择属性:

在此处输入图片说明

然后按Ctrl+r 然后按Ctrl+e

将出现一个对话框,向您显示要对代码进行的更改的预览。如果一切看起来都很好(大多数情况下),请按OK


0

我的机器上不再安装Visual Studio(并且我使用的是Linux),但我确实记得在其中一个菜单内的某个位置隐藏了一个向导,该向导可以访问类生成器。

使用此向导,您可以定义所有类的详细信息,包括方法和属性。如果我还记得的话,可以通过一个选项让Visual Studio为您自动创建设置器和获取器。

我知道它很模糊,但是检查一下,您可能会发现它。



0

首先获取扩展程序,只需按(Ctrl+ Shift+ X)并安装getter setter...。

之后,只需选择变量,然后单击鼠标右键。转到命令面板...

并键入getter。它将建议生成get和set方法。点击这个...


1
您所说的“优先获得扩展名”是什么意思?
彼得·莫滕森

在哪种情况下应按Ctrl + Shift + X?
彼得·莫滕森

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.