6

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

4

8 回答 8

18

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

int n;

int n;

public int N
{
   get { return n; }
   set { n = value; }
}
于 2010-04-27T19:25:16.743 回答
12

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

如果您只是不想编写自定义字段支持的属性,则可以使用auto-properties,例如 fpor ,如下所示:

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)提供实现。但是,您可以将属性设为虚拟。

于 2010-04-27T19:23:31.643 回答
12

如果您使用 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; }

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

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

于 2010-04-27T19:24:24.047 回答
4

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

于 2010-04-27T19:27:43.877 回答
2

你为什么不这样做:

public int SomeProperty { get; set; }

或者

public int SomeOtherProperty { get; private set; }

?

于 2010-04-27T19:23:30.573 回答
2

从这一行:

string mytest;

选择整行“string mytest;”,然后选择 VS 菜单:Edit > Refactor > Encapsulate field ... 你得到这个:

public string Mytest { get => mytest; set => mytest = value; }
于 2019-04-04T18:04:30.507 回答
1

我们可以使用prop快捷方式和代表 Visual Studio 工具在 Visual Studio 中快速创建 C# 属性,我们可以使用名为C# 属性生成器的工具生成 C# 属性。

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

c# 属性分配器

于 2017-08-17T10:14:52.767 回答
0

对于大多数事情,您可能应该在 C# 中使用自动实现的属性。但是,如果您想要带有显式支持字段的“旧式”属性,您可以创建一个 Visual Studio 代码片段以使它们更易于编写。这篇博文有一个例子。

于 2010-04-27T19:30:55.903 回答