我应该如何在C#中使用Properties?

mir*_*iri 10 .net c# properties

我不确定因为在Java中getter/setter看起来有点不同但是用"c#方式"来编写这些东西?

选项a.)

    private string name;

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

    private int time;

    public int Time
    {
        get { return time; }
        set { time = value; }
    }
Run Code Online (Sandbox Code Playgroud)

湾)

    private string _name;
    private int _time;

    public string name
    {
        get { return _name; }
        set { _name = value; }
    }

    public int time
    {
        get { return _time; }
        set { _time = value; }
    }
Run Code Online (Sandbox Code Playgroud)

C.)

   public string name {get; set;}
   public int time {get; set;}
Run Code Online (Sandbox Code Playgroud)

好的,有一些例子.什么看起来更好?我应该首先编写所有私有变量声明然后编写属性,还是应该将我的变量和属性声明组合在一起.

Jon*_*eet 26

如何遵循.NET命名约定:

public string Name { get; set; }
public int Time { get; set; } // Odd type for time, admittedly...
Run Code Online (Sandbox Code Playgroud)

除非你在其中做一些非常重要的事情,否则不要自己手动编写属性.

如果你手工编写的属性实现,这取决于你如何命名私有变量.就个人而言我会用:

private string name;
public string Name
{
    get { /* whatever */ }
    set { /* whatever */ }
}
Run Code Online (Sandbox Code Playgroud)

...但是如果你想使用下划线,那就是你的特权.

至于会员的订购 - 这更是你自己的选择.假设您正在与团队合作,请与团队交流,了解当地的惯例.


mel*_*okb 11

如果您不需要访问底层支持字段,则建议使用自动属性(C).但是,根据.NET命名约定,它们应该是PascalCase.

public string Name { get; set; }
public int Time { get; set; }
Run Code Online (Sandbox Code Playgroud)


Tig*_*ran 6

前两个只是根据公司/开发团队或您自己的决定来命名.

第三种情况是对同一属性进行decal的简短方法,其中实际field将由运行时本身生成.

简短优点:它简短易行.

简短缺点:无法 geter/setter中放置内容,不能在Visual Studio中放置断点 ...

希望这可以帮助.