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

Posted

技术标签:

【中文标题】我们如何在 Visual Studio 中生成 getter 和 setter?【英文标题】:How can we generate getters and setters in Visual Studio? 【发布时间】:2010-09-05 09:43:15 【问题描述】:

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

但欢迎对良好实践进行任何更明确的解释或评论。

【问题讨论】:

【参考方案1】:

除了使用 Ctrl + K, X 你也可以只输入prop 然后点击 Tab 两次。

【讨论】:

不要忘记 "propg" + tab 生成相同的,但使用私人设置器。 查看 msdn.microsoft.com/en-us/library/z41h7fat.aspx 以获得 Visual C# 中更有用的代码 sn-ps【参考方案2】:

Visual Studio 还有一个功能,可以从私有变量生成属性。

如果您右键单击一个变量,在弹出的上下文菜单中,click on the "Refactor" item, and then choose Encapsulate Field...。这将为变量创建一个 getter/setter 属性。

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

【讨论】:

很遗憾,Visual Studio 的快速版本不提供此选项。 也有快捷方式 - 我更喜欢这种方式 :) - CTRL+R+E【参考方案3】:

我使用 Visual Studio 2013 Professional。

将光标放在实例变量的行。 按组合键 Ctrl + RCtrl + E,或单击鼠标右键。选择上下文菜单重构封装字段...,然后按OK。 在 Preview Reference Changes - Encapsulate Field 对话框中,按下按钮 Apply。 这是结果:

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

其他信息:

从 C# 3.0(2007 年 11 月 19 日)开始,我们可以使用 auto-implemented properties(这只是 syntactic sugar)。

private int productID;

public int ProductID

    get  return productID; 
    set  productID = value; 

变成

public int ProductID  get; set; 

【讨论】:

【参考方案4】:

生成是指自动生成吗?如果这不是你的意思:

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 - 我一直看到 _property 约定。【参考方案5】:

您也可以使用“propfull”并按两次TAB

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

【讨论】:

这个比较好用,老是忘记了 我正在做 XML 序列化并在整个节目中产生大量属性。如果可以的话,+100septillion upvotes。谢谢!编辑-甚至更好,自动热键脚本 + ^this = 生产力超过 90000! Video demonstrating the use of snippet 'propfull'(除其他外),在 4 分 11 秒时。【参考方案6】:

在 Visual Studio 2019 中,选择您的属性,如下所示:

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

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

【讨论】:

我认为这应该设置为选定的答案,因为问题要求为“选定的变量集”自动生成代码 sn-p。【参考方案7】:

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

右键单击您的代码,单击 Insert Snippet (Ctrl+K,X),然后然后从列表中选择“prop”。

【讨论】:

【参考方案8】:

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

(或在周围的类中点击 Alt + Ins),您将获得生成您能想到的 getter 和/或 setter 的所有选项:- )

【讨论】:

【参考方案9】:

我创建了自己的 sn-p,添加了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,它就会添加get set。这没什么神奇的,但由于我倾向于先键入访问修饰符,所以我不妨完成名称和类型。

【讨论】:

【参考方案10】:

使用propfull 关键字。

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

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

private data_type var_name;

public data_type var_name1 get;set;

Video demonstrating the use of snippet 'propfull'(除其他外),时间为 4 分 11 秒。

【讨论】:

请提供有关您的答案的更多信息,简短描述的答案不适用于下一个访问者... 在编辑器中键入关键字propfull,它将生成类似私有数据类型var_name的代码;公共数据类型 var_name1 获取;设置; 你能添加“propfull”的引用吗(editing your answer,不在 cmets 中)?【参考方案11】:

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

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

【讨论】:

【参考方案12】:

除了“prop”sn-p 和自动属性之外,还有一个重构选项可让您选择现有字段并通过属性 (right click on the field → RefactorEncapsulate Field...) 公开它。

另外,如果您不喜欢“prop”实现,您可以创建自己的 sn-ps。此外,像 ReSharper 这样的第三方重构工具将为您提供更多功能,并使创建更高级的 sn-ps 变得更加容易。如果你负担得起,我会推荐 ReSharper。

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

Video demonstrating the use of snippet 'prop'(除其他外),3 分 23 秒。

【讨论】:

第一个链接重定向到 Visual Studio 2005 Retired documentation。它指的是the ten 中的哪一个?想必是在Visual Studio中如何使用sn-ps的说明。【参考方案13】:

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

使用此向导,您可以定义所有类的详细信息,包括方法和属性。如果我没记错的话,有一个选项可以让 Visual Studio 自动为你创建 setter 和 getter。

我知道这很模糊,但检查一下,你可能会找到。

【讨论】:

【参考方案14】:

代表 Visual Studio 工具,我们可以使用名为 C# property generator. 的在线工具轻松生成 C# 属性

【讨论】:

无用功能【参考方案15】:

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

在此之后,只需选择您的变量并右键单击。转到命令面板...

然后输入 getter ... 它会建议生成 get 和 set 方法。点击这个...

【讨论】:

你说的“先获取扩展”是什么意思 在什么情况下应该按Ctrl + Shift + X?【参考方案16】:

您只需在 android Studio 中按 Alt + Ins 即可。

声明变量后,会在生成的代码中获取getter和setter。

【讨论】:

没人问过android studio 问题是“我们如何在 Visual Studio 中生成 getter 和 setter?”。 Visual Studio 与 Android Studio 不同。

以上是关于我们如何在 Visual Studio 中生成 getter 和 setter?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio 中生成 .exe C# 文件? [复制]

如何在不同文件中使用 #define 等宏在 Visual Studio for C++ 中生成重复代码

如何根据构造型而不是元素类型从 uml 建模项目在 Visual Studio 中生成代码?

如何使用Visual Studio 2010在数据库中生成随机测试数据

Visual Studio 2010,TlbImp 在 2.0 项目中生成 .net 4.0 互操作

在 Visual Studio 中生成 ERD 图