【问题标题】:Shortcut to create properties in Visual Studio?在 Visual Studio 中创建属性的快捷方式?
【发布时间】:2011-04-21 17:44:45
【问题描述】:

我见过一些人用 C# 非常快地创建属性,但是他们是怎么做到的呢?

Visual Studio(目前使用 Visual Studio 2010)中提供哪些快捷方式来创建属性?

我正在使用 C#。

例如,

public string myString {get;set;}

【问题讨论】:

    标签: c# visual-studio properties code-snippets shortcut


    【解决方案1】:

    您可以键入“prop”,然后按两次 Tab。这将生成以下内容。

    public TYPE Type { get; set; }
    

    然后你改变“TYPE”和“Type”:

    public string myString {get; set;}
    

    您还可以输入“propfull”然后按两次制表符来获取完整的属性。这将生成字段和完整的属性。

    private int myVar;
    
    public int MyProperty
    {
        get { return myVar;}
        set { myVar = value;}
    }
    

    【讨论】:

    • 您忘记将其命名为“代码片段”:)
    • @PVitt:谢谢我不知道名字:-)
    • 另外,propg 将创建:public int MyProperty { get;私人套装; }
    • 您也可以编辑代码 sn-p,在 Visual Studio 安装下的文件夹 VC#\Snippets\1033\Visual C#\" 中。我编辑了我的 propfull.sn-p 来做支持例如,字段 protected 而不是 private
    • 如果你只是输入 P 和 TAB 两次,那么它也会创建 int 属性。
    【解决方案2】:

    除了Amra's answer,你可以通过键入找到其他sn-ps

    Ctrl + K, Ctrl + X

    在我的 Visual Studio 中映射到 Edit.InsertSnippet 并向您显示可用的 sn-ps 的完整列表。

    还请记住,您可以使用片段管理器配置自己的 sn-ps,该片段管理器位于 Tools 菜单 Code Snippets Manager... 中。 基本上,您创建一个文件 *.snippet 并使用代码片段管理器中的导入按钮将其添加到 Visual Studio。 如需完整教程,您可以访问文档; Walkthrough: Create a code snippet.


    在 Visual Studio Code 中,sn-ps 的处理方式与在 Visual Studio 中略有不同。您可以通过键入 Ctrl + Shift + P 并键入 snippet 来访问所有 sn-ps。应该有两个选项,Insert SnippetPreferences: Configure User Snippets

    前者从您的 sn-ps 列表中插入一个 sn-p(使用您可以在状态栏中看到的语言模式),而后者您可以为任何语言模式创建自己的 sn-ps。

    如果您知道短名称,您只需键入它并使用 Tab 来展开 sn-p。要插入 C# 属性,您可以使用三个可用的 sn-ps,proppropfullpropg,用于不同的目的。

    【讨论】:

    • 不错,速度较慢,但​​您会获得完整的捷径列表 +1。
    • 我爱你!一直在找这个
    【解决方案3】:

    将光标放在您的字段 private int _i; 内,然后编辑菜单或 RMB - 重构 - 封装字段... (CtrlR, CtrlE) 创建标准属性访问器。

    【讨论】:

    • 不是每个人都使用相同的键盘布局(更不用说 ReSharper 等人了)。添加在菜单中可以找到相同功能的位置可能会很好。
    【解决方案4】:

    键入“propfull”。使用起来要好很多,而且会生成属性和私有变量。

    键入“propfull”,然后键入两次 TAB

    【讨论】:

    • 为什么完整属性比自动属性更好?为什么要在代码中添加一个额外的字段?
    • 如果你需要在 setter 或 getter 中做一些事情。
    【解决方案5】:

    按照 Amra 的建议输入 "prop" + Tab + Tab 后, 您可以立即键入属性的类型(将替换默认的int),键入另一个选项卡并键入属性名称(将替换默认的 MyProperty)。按 Enter 完成。

    【讨论】:

      【解决方案6】:

      我认为 Alt+R+F 是从变量声明创建属性的正确方法

      【讨论】:

      • +1 这实际上是我正在寻找的,因为它为现有变量创建属性,谢谢!
      • hm.. 它正在为我缩小文件。这在 VS2012 上没有按我的预期工作
      【解决方案7】:

      开始于:

      private int myVar;
      

      当您选择“myVar”并右键单击然后选择“重构”并选择“封装字段”。

      它会自动创建:

      {
          get { return myVar; }
          set { myVar = value; }
      }
      

      或者您可以通过按 Ctrl + R + E 来快捷方式。

      【讨论】:

      • 什么版本的 Visual Studio?它似乎不在 Visual Studio 2008 中。
      • VS 2010 附带了各种代码重构选项。您需要使用更新的版本。
      【解决方案8】:

      我喜欢 IDE 中的一点是我能够编写一些变量,例如:

          private int id;
          private string name;
          private string version;
          private string description;
          private string status;
          private string symbol;
      

      注意,变量名以小写字母开头,然后选中整个块,按Ctrl+R,Ctrl+ E,应用。属性以大写字母生成:

          public int Id
          {
              get
              {
                  return id;
              }
      
              set
              {
                  id = value;
              }
          }
      

      等等

      【讨论】:

      • 这并不能真正回答问题,是吗?
      • 这是我一直在寻找的一种捷径,但你是对的。我的回答侧重于如何准备变量以在应用快捷方式后无需编辑即可准备好属性。
      • 这是我一直在寻找的一种捷径,最终出现在了这个页面上。最初的问题是如何在 C# 中真正快速地创建属性。在这种情况下的许多用例中,这将是您拥有私有字段并希望避免将其设为公共字段的地方(这是我的情况)。如果我写了我的私有字段,并希望尽快关闭完整的公共属性,我认为这在这个大的案例子集中完美地回答了问题。简单。
      • 这很好,但我的给了我这个'get =>'的简写,我不喜欢。生成的内容是否有设置?
      【解决方案9】:

      在 Visual Studio 中编写时,

      public ServiceTypesEnum Type { get; set; }
      public string TypeString { get { return this.Type.ToString();}}
      

      ReSharper 会不断建议将其转换为:

      public string TypeString => Type.ToString();
      

      【讨论】:

      • 但我认为第一个比 ReSharper 建议的更具可读性
      • 这如何回答这个问题?
      【解决方案10】:

      前往

      工具 >> 选项 >> 文本编辑器 >> C# >> IntelliSense

      在片段行为部分下:

      确保选中“始终包含 sn-ps”。

      我希望它也对你有用。

      【讨论】:

        【解决方案11】:

        键入 P + Tab + Tab

        更改数据类型,按TAB,更改属性名,按End + Enter

        【讨论】:

          【解决方案12】:

          ReSharper 在其广泛的功能集中提供property generation。 (不过这并不便宜,除非你在做一个开源项目。)

          【讨论】:

            【解决方案13】:

            如果您使用的是 Visual Studio 2013、2015 或更高版本,只需点击下面的链接。它将为您提供 Visual Studio 中的完整快捷方式!

            Visual C# Code Snippets

            【讨论】:

            【解决方案14】:

            使用 VsVim 的代码 sn-ps 似乎有点有趣。当我最终来到这里时,我正在寻找的快捷方式要简单得多:在成员名称类型之后 {g;s kbd>;

            我打开了分隔符自动关闭,所以右大括号出现在 { 上,输入分号会触发 get 和 set 的自动完成。

            适用于VS2013和VS2015,VS2012只是缺少自动大括号匹配。

            【讨论】:

              【解决方案15】:

              在 Visual Studio 2017 社区中,键是 ctrl + 。

              【讨论】:

                【解决方案16】:

                在 C# 中:

                private string studentName;
                

                分号后的行尾(;) 只需按下

                Ctrl + R + E
                

                它将显示一个弹出窗口,如下所示: 单击 Apply 或按 ENTER 将生成以下属性代码:

                public string StudentName
                        {
                            get
                            {
                                return studentName;
                            }
                
                            set
                            {
                                studentName = value;
                            }
                        }
                

                在 VB 中:

                Private _studentName As String
                

                在行尾(字符串后)按,确保将_(下划线)放在开头,因为它会在属性末尾添加数字:

                Ctrl + R + E
                

                同样的窗口会出现:

                点击 Apply 或按下 ENTER 将生成以下属性代码,末尾带有数字,如下所示:

                Public Property StudentName As String
                        Get
                            Return _studentName
                        End Get
                        Set(value As String)
                            _studentName = value
                        End Set
                    End Property
                

                带数字的属性是这样的:

                Private studentName As String
                 Public Property StudentName1 As String
                        Get
                            Return studentName
                        End Get
                        Set(value As String)
                            studentName = value
                        End Set
                    End Property
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2019-06-29
                  • 2010-11-30
                  • 2014-07-11
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2010-09-06
                  相关资源
                  最近更新 更多