我对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},它的功能与以前一样。这段代码在做什么?访问者有什么意义?
答案 0 :(得分:1)
如果我从Theta中删除静态声明,它将不再编译
这是因为您尝试从静态方法访问实例属性。您需要创建Program
的实例才能访问非静态属性。
访问者的意义是什么?
它们允许您定义获取/设置值的方法,而不仅仅是存储值的字段。还有其他更微妙的差异,其中大部分都是here所描述的。在我看来,最重要的是: