这个C#控制台代码正确吗?
诚然,我对C#/OOP缺乏经验,但我最近遇到了这段代码,我觉得这段代码不正确,尽管它在功能上确实有效。代码来自控制台应用程序这个C#控制台代码正确吗?,c#,C#,诚然,我对C#/OOP缺乏经验,但我最近遇到了这段代码,我觉得这段代码不正确,尽管它在功能上确实有效。代码来自控制台应用程序 namespace ConsoleApp { class Program { static private double Theta{ get; set; } static void Main(string[] args) { ... var thetaString = Console.ReadLine();
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},它的功能与以前一样。这段代码在做什么?访问器的意义是什么
如果我从Theta中删除静态声明,它将不再编译
这是因为您试图从静态方法访问实例属性。您需要创建程序
的实例来访问非静态属性
访问器的意义是什么
它们允许您定义获取/设置值的方法,而不仅仅是存储值的字段。还有其他更微妙的区别,其中大部分都被描述了。在我的选择中,最重要的是:
- 将字段更改为属性是一项突破性的更改-必须针对新程序集重新生成客户端才能合并更改。将自动实现的属性更改为具有实际代码的属性不是破坏性的更改
- 大多数数据绑定方法使用反射,只支持绑定到属性