这个C#控制台代码是否正确?

时间:2015-03-02 21:15:03

标签: c#

我对C#/ OOP缺乏经验,但我最近遇到过这段代码,虽然看起来功能上有所不同,但对我来说感觉不对。代码来自控制台应用程序。

namespace ConsoleApp
{
  class Program
  {
    static private double Theta{ get; set; }

    static void Main(string[] args)
    {
      ...
      var thetaString = Console.ReadLine();
      if (!String.IsNullOrEmpty(thetaString))
        Theta = Math.PI * Double.Parse(thetaString) / 180.0;
      ...
    }
  }
}

如果我从Theta中删除静态声明,它将不再编译。如果我删除{get; set},它的功能与以前一样。这段代码在做什么?访问者有什么意义?

1 个答案:

答案 0 :(得分:1)

  

如果我从Theta中删除静态声明,它将不再编译

这是因为您尝试从静态方法访问实例属性。您需要创建Program的实例才能访问非静态属性。

  

访问者的意义是什么?

它们允许您定义获取/设置值的方法,而不仅仅是存储值的字段。还有其他更微妙的差异,其中大部分都是here所描述的。在我看来,最重要的是:

  • 将字段更改为属性是一项重大变更 - 必须针对新程序集重建客户端以合并更改。将自动实现的属性更改为具有实际代码的属性是一个重大更改。
  • 大多数数据绑定方法使用反射,仅支持绑定到属性。