我们如何在 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 + R、Ctrl + 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;
。我这样做只是因为我发现 prop
→ Tab 很笨重。
<?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,然后输入get
→ Tab,它就会添加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 → Refactor → Encapsulate 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在数据库中生成随机测试数据