0

可能重复:
C#:我可以删除“{ get; 放; }”?

我的代码有数百行如下所示:

public string abc { get; set; }
public string def { get; set; }

结尾处都有{ get; set; }

我想知道是否有一种方法可以清理我的代码,甚至消除对代码的需求,{ get; set; }同时仍将它们公开。

我知道这不是一个大问题,但我想尝试尽可能多地清理我的代码。

4

6 回答 6

9

不好。_ 正是它{get;set;}使它们自动实现了属性;没有它们,它们就变成了田野。你真的不想要公共领域,所以别管它。

真的,您在这里没有解决任何问题;别管它。这是正常的(至少因为引入了自动实现的属性),并且{get;set;}不会增加行数等。

于 2011-04-11T10:24:47.620 回答
3

可以,但它们将不再是公共属性,而是采用公共变量的形式(这当然不是优先的,并且会被不赞成,因此可以自行决定使用):

public string abc;
public string def;

我会说将它们保留为属性,自动实现的属性是天赐之物,您的担忧是没有根据的。

于 2011-04-11T10:25:09.727 回答
1

如果您删除{ get; set; },您将获得一个公共字段而不是公共属性。属性通常是公开类的简单成员的首选方式,因为它们允许您隐藏它们的实现并在不破坏依赖组件的情况下对其进行更改。

如果您有大量代码重复,请考虑使用通用属性(和方法)的基类/继承来清理您的代码。

于 2011-04-11T10:26:20.583 回答
1

{ get; set; }意味着您有一个字段的setter 和 getter 属性(确切地说是自动实现的属性)。在类中拥有公共字段不是一个好主意,因此您应该使用属性封装您的字段。所以你有它们很好。

于 2011-04-11T10:26:53.120 回答
0

如果有具有相同属性的类,您可以相互扩展。

class Person
{
    public string Name { get; set; }
}

class Student : Person
{
    public string StudentId { get; set; }
}

class ShopKeeper : Person
{
    public Shop Shop { get; }
}

在上面的示例中StudentShopKeeper将继承属性Name,这意味着您只需编写一次。

你不能让getandset方法变得更简单。

于 2011-04-11T10:25:30.843 回答
0

:) 您应该已经看到具有如下支持字段的属性:

        private string _test;
        public string Test
        {
            get { return _test; }
            set { _test = value; }
        }

现在需要清理:)

于 2011-04-11T10:26:31.827 回答