C# 自动实现的属性错误

C# 自动实现的属性错误,c#,.net,C#,.net,我尝试使用AIP public int AIP_NoSet { get { ;} } 编译器说这是一个错误: Program.c1.AIP_NoSet.get”:并非所有代码路径都返回值 但即使我写 公共国际机场 { 获取{;} 集合{;} } 它向我显示了同样的错误。 我哪里错了?片刻的沉思 public int AIP_NoSet { get; set; } 听起来您想要一个只定义了“get”的自动属性 编译器不允许这样做 您可以通过添加private集(如其他人所回

我尝试使用AIP

public int AIP_NoSet
{
    get { ;}
}
编译器说这是一个错误:
Program.c1.AIP_NoSet.get”:并非所有代码路径都返回值

但即使我写


公共国际机场
{
获取{;}
集合{;}
}

它向我显示了同样的错误。

我哪里错了?

片刻的沉思

public int AIP_NoSet { get; set; }

听起来您想要一个只定义了“get”的自动属性

编译器不允许这样做

您可以通过添加
private
集(如其他人所回答的)或不使用自动属性来实现这一点:

private int _aip = int.MaxValue;
public int AIP_NoSet { get {return _aip;}}
或者,如果您不想设置它,只需使用常量:

public const int AIP_NoSet = 2;
你应该写

public int AIP { get; set; }
当您在它之后写入
{;}
时,这被视为用户实现属性的语法错误尝试。您不能没有setter,但可以将setter设置为私有:

public int AIP_PrivateSet { get; private set; }

使setter访问私有并修复语法

public int AIP_NoSet { get; private set; }

但是如果我只需要set和only get呢?only set public int AIP_NoGet{set{;}}}@Sergey一个只有get的自动实现属性有什么好处呢?你永远无法设置它。框架不允许这样做。如果只使用
get
访问器,则永远不能将属性设置为任何值!我只是想试试。我知道它们没有用。但是为什么只允许设置,而不允许只获取?