我能否在C#中自动生成我的get/set方法?

5

需要手动 -ages-。我不能只选择我的属性然后点击一个按钮吗?

它们看起来像这样:

private bool _Monday = false;
private bool _Tuesday = false;
private bool _Wednesday = false;
private bool _Thursday = false;
private bool _Friday = false;
private bool _Saturday = false;
private bool _Sunday = false;

有很多这样的东西。


2
@SLC - 如果它们是私有的,为什么你想把它们作为属性呢? - Philip Wallace
1
@outlaw:拥有私有字段有什么问题吗?据我所知,这是一种良好的实践,并且也被面向对象编程推荐。 - MoienGK
@dave 私有属性无法在类外部访问(我相信你知道)。因此,如果您可以直接访问某些内容,那么拥有一个get/set方法就没有太多用处了。 - FuriousFolder
@FuriousFolder 这并不是那么简单。虽然你的评论提到了一篇名为“getter/setter's are evil”的设计理论文章。 - MoienGK
@dave 我没有读过那篇特定的文章 :p 是的,使用访问器方法确实会创建依赖关系。但在 C# 中,声明 getter/setter 就像这样简单:public bool myProp {get;set;}(如果你不知道的话) 因此,它非常干净,而且“获取”属性不需要方法调用,至少不是传统意义上的。语法将会是 myObj.myProp = true 然而,在 C# 中,set “方法”的作用域至少与属性的作用域一样受限。所以,如果你有一个私有属性,你无论如何都不能在类外部设置它。 - FuriousFolder
显示剩余3条评论
7个回答

15

目前的 C# 版本(3.0)具有自动属性:

public bool Monday { get; set; }
// etc …

(您现在不需要自己的字段,编译器会生成后备字段。)不幸的是,它们目前还不支持初始化表达式-但在您的示例中,您不需要它们,因为falsebool的默认值。


5
@John:请只在增加价值的情况下进行编辑...我故意省略了“私人”一词。我们不知道OP是否希望在此处添加该内容。 - Konrad Rudolph

14
您可以在字段上右键单击,然后转到重构>封装字段。这将生成一个属性。您仍然需要逐个完成,但比手打要快得多!

6

您可以在C# 3.0或更高版本中使用自动属性

public bool Monday { get; set; }

大致相当于:

private bool _Monday;
public bool Monday
{
    get { return _Monday; }
    set { _Monday = value; }
}

5

使用 Ctrl+K, Ctrl+X 快捷键可以打开代码片段。输入 'prop' 可以调用属性声明的代码片段。您可以通过制表符在片段字段之间切换并填写它们。按 Enter 键完成代码片段。


6
这里有更好的方法。只需输入“prop\t\t”即可快捷打开代码片段菜单。 - Kleinux

1
如果您使用Visual Studio,只需键入prop,然后按Tab键,Visual Studio将让您选择属性的类型和名称。

0

一些适用于Visual Studio的插件具有基于私有字段创建属性的功能(ReSharper是一个很好的例子)。


0

我们使用代码片段,使我们能够即时提供数据类型和属性名称。我们还可以选择提供OnPropertyChanged事件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接