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

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

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

【问题讨论】:

    标签: c# visual-studio setter getter


    【解决方案1】:

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

    【讨论】:

    【解决方案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。

              【讨论】:

              【解决方案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 StudioAndroid Studio 不同。
                猜你喜欢
                • 1970-01-01
                • 2014-07-16
                • 2017-11-05
                • 2010-09-13
                • 2015-08-25
                • 2010-09-10
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多