【问题标题】:Quick create C# properties from variables从变量快速创建 C# 属性
【发布时间】:2010-04-27 19:20:55
【问题描述】:

对于 C#,我讨厌写出变量然后写出所有属性。有没有办法选择所有变量,右键创建所有属性。

【问题讨论】:

  • 您使用的是哪个版本的 .Net?

标签: c# automatic-properties


【解决方案1】:

右击字段声明,菜单Refactor -> Encapsulate field 你从

int n;

int n;

public int N
{
   get { return n; }
   set { n = value; }
}

【讨论】:

  • 我找不到“封装”...它只是专业版功能吗?
【解决方案2】:

您是否在寻找代码重构工具?如果是,check out ReSharper。它提供了一种将简单的字段支持属性转换为自动属性的简单方法,反之亦然。

如果您只是不想编写自定义字段支持的属性,您可以使用auto-properties,例如,像这样:

public string MyProperty { get; set; } // generates an auto-property

相当于:

private string m_MyProperty;
public string MyProperty 
{ 
  get { return m_MyProperty; }
  set { m_MyProperty = value; }
}

您甚至可以使 setter 和 getter 的可访问性有所不同:

public string MyProperty { get; private set; }

如果您确实选择使用自动属性,请注意您不能访问底层字段,也不能只为一部分(仅 getter 或仅 setter)提供实现。但是,您可以将属性设为虚拟。

【讨论】:

  • 没有什么比免费广告更好的了。
  • ReSharper 和 CodeRush 值得推广。
  • 在这种情况下并非如此,因为 Visual Studio 已内置重构以将字段提升为属性(右键单击 > 重构 > 封装字段)
  • @Matt Greer:VS 的重构支持已经走过了漫长的道路,但它仍然没有提供类范围或项目范围的代码重构方式。
  • VS 的重构要好得多,但与 Eclipse 相差甚远,Eclipse 是我使用过并非常喜欢的一个 java 工具。 Eclipse 在范围上更好,它提供了它应该去的重构和更多的重构方法,比如当你意识到你应该在祖先中做某事时的“push up 方法”。带有 resharper 的 VS 更接近 Eclipse,但顺便说一下,我希望基础产品中的所有这些都不是免费的。由于 VS 2010 改进了重构和测试,我会拒绝多购买一些额外的插件。
【解决方案3】:

如果您使用的是 C# 3.0 或更高版本(本质上是 VisualStudio 2008),则可以使用自动属性。虽然这并不完全符合您的要求,但它应该(希望)可以解决问题。

而不是写:

private string m_Name;

public string Name
{
    get { return m_Name; }
    set { m_Name = value; }
}

你可以写:

public string Name { get; set; }

这将为您提供可以在课堂上进行的快速“愚蠢”(即没有检索或分配逻辑)属性。如果您以后发现需要检索和赋值逻辑,只需返回并执行完整的属性声明语法,您无需更改任何调用代码。

唯一真正的区别是您必须使用该属性来获取您的类中的值,因为支持变量是在编译时生成的并且对您的代码不可用。

【讨论】:

    【解决方案4】:

    仅供参考,只需输入“prop”(不带引号)即可触发 VS 附带的 sn-ps 之一,您只需按自己的方式浏览,这是迄今为止最快的选择。

    【讨论】:

      【解决方案5】:

      你为什么不这样做:

      public int SomeProperty { get; set; }
      

      public int SomeOtherProperty { get; private set; }
      

      ?

      【讨论】:

        【解决方案6】:

        从这一行开始:

        string mytest;
        

        选择整行 "string mytest;", 然后VS菜单:编辑>重构>封装字段... 你得到这个:

        public string Mytest { get => mytest; set => mytest = value; }
        

        【讨论】:

        • 尝试使用键盘快捷键,用鼠标选择字段并按“ctrl + r, e”(先是 ctrl + r,然后是 e),最后按 Enter。
        【解决方案7】:

        我们可以使用 prop 快捷方式在 Visual Studio 中快速创建 c# 属性 并且代表 Visual Studio 工具,我们可以使用名为 c# property generator.. 的工具生成 c# 属性

        当类中有这么多属性时,当我们创建该类的对象时, 我们必须付出一定的痛苦来分配属性,所以这个工具会在一定程度上减轻你的痛苦,这会自动为对象分配属性..

        c# property assigner

        【讨论】:

          【解决方案8】:

          对于大多数事情,您可能应该在 C# 中使用 Auto-Implemented properties。但是,如果您想要具有显式支持字段的“旧式”属性,您可以创建一个 Visual Studio 代码 sn-p 以使它们更易于编写。 This blog post 有一个例子。

          【讨论】:

            猜你喜欢
            • 2018-10-11
            • 2011-06-09
            • 2017-09-07
            • 2014-05-30
            • 2021-08-01
            • 1970-01-01
            • 2015-02-27
            • 1970-01-01
            • 2016-12-12
            相关资源
            最近更新 更多