【发布时间】:2010-09-05 09:43:15
【问题描述】:
“生成”是指自动生成特定选定(组)变量所需的代码。
但欢迎对良好实践进行任何更明确的解释或评论。
【问题讨论】:
标签: c# visual-studio setter getter
“生成”是指自动生成特定选定(组)变量所需的代码。
但欢迎对良好实践进行任何更明确的解释或评论。
【问题讨论】:
标签: c# visual-studio setter getter
除了使用 Ctrl + K, X 你也可以只输入prop 然后点击 Tab 两次。
【讨论】:
Visual Studio 还有一个功能,可以从私有变量生成属性。
如果您右键单击一个变量,在弹出的上下文菜单中,click on the "Refactor" item, and then choose Encapsulate Field...。这将为变量创建一个 getter/setter 属性。
我不太喜欢这种技术,因为如果您必须创建大量 getter/setter 时使用它会有点尴尬,而且它会将属性直接放在私有字段下方,这让我很烦恼,因为我通常将我所有的私有字段组合在一起,而这个 Visual Studio 功能破坏了我班级的格式。
【讨论】:
我使用 Visual Studio 2013 Professional。
您还放置光标以选择属性。使用菜单编辑 → 重构 → 封装字段...
其他信息:
从 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; }
【讨论】:
生成是指自动生成吗?如果这不是你的意思:
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 也总是使用这种速记方法。
【讨论】:
property_之后的小破折号而不是_property之前的破折号?
您也可以使用“propfull”并按两次TAB。
将生成带有get和set的变量和属性。
【讨论】:
如果您使用的是 Visual Studio 2005 及更高版本,则可以使用 insert sn-p 命令快速创建 setter/getter。
右键单击您的代码,单击 Insert Snippet (Ctrl+K,X),然后然后从列表中选择“prop”。
【讨论】:
如果您使用的是 ReSharper,请进入 ReSharper 菜单 → 代码 → 生成...
(或在周围的类中点击 Alt + Ins),您将获得生成您能想到的 getter 和/或 setter 的所有选项:- )
【讨论】:
我创建了自己的 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。这没什么神奇的,但由于我倾向于先键入访问修饰符,所以我不妨完成名称和类型。
【讨论】:
使用propfull 关键字。
它会生成一个属性和一个变量。
在编辑器中输入关键字propfull,后跟两个TAB。它将生成如下代码:
private data_type var_name;
public data_type var_name1{ get;set;}
Video demonstrating the use of snippet 'propfull'(除其他外),时间为 4 分 11 秒。
【讨论】:
在 Visual Studio Community Edition 2015 中,您可以选择所需的所有字段,然后按 Ctrl + 。 自动生成属性。
您必须选择是否要使用属性而不是字段。
【讨论】:
除了“prop”sn-p 和自动属性之外,还有一个重构选项可让您选择现有字段并通过属性 (right click on the field → Refactor → Encapsulate Field...) 公开它。
另外,如果您不喜欢“prop”实现,您可以创建自己的 sn-ps。此外,像 ReSharper 这样的第三方重构工具将为您提供更多功能,并使创建更高级的 sn-ps 变得更加容易。如果你负担得起,我会推荐 ReSharper。
【讨论】:
我不再在我的机器上安装 Visual Studio(我使用的是 Linux),但我记得有一个向导隐藏在某个菜单中的某个位置,可以访问类生成器。
使用此向导,您可以定义所有类的详细信息,包括方法和属性。如果我没记错的话,有一个选项可以让 Visual Studio 自动为你创建 setter 和 getter。
我知道这很模糊,但检查一下,你可能会找到。
【讨论】:
代表 Visual Studio 工具,我们可以使用名为 C# property generator. 的在线工具轻松生成 C# 属性
【讨论】:
首先获取扩展只需按 (Ctrl + Shift + X) 并安装 getter setter ....
在此之后,只需选择您的变量并右键单击。转到命令面板...
然后输入 getter ... 它会建议生成 get 和 set 方法。点击这个...
【讨论】:
您只需在 Android Studio 中按 Alt + Ins 即可。
声明变量后,会在生成的代码中获取getter和setter。
【讨论】: