C++ 在结构内部使用比较器函数的需要是什么?
由于您的setter递归调用您的setter递归调用您的setter递归调用您的setter 您需要为此设置一个支持字段,如下所示:C++ 在结构内部使用比较器函数的需要是什么?,c++,dictionary,struct,comparator,C++,Dictionary,Struct,Comparator,由于您的setter递归调用您的setter递归调用您的setter递归调用您的setter 您需要为此设置一个支持字段,如下所示: public class Student { private int _sid; public int Sid { set { if (value <= 0) Console.WriteLine("Id must be positive.");
public class Student {
private int _sid;
public int Sid
{
set
{
if (value <= 0) Console.WriteLine("Id must be positive.");
else _sid = value;
}
get { return _sid; }
}
公共班级学生{
私人互联网服务;;
公共int Sid
{
设置
{
如果(value您的属性正在递归地调用它们自己。请使用您的Sid
属性
public int Sid
{
set
{
if (Sid <= 0) Console.WriteLine("Id must be positive."); // here, also validation wrong--use value
else Sid = value; // here
}
get { return Sid; } //here
}
您也应该考虑在验证失败时在SET中采取行动。简单地输出到控制台是出乎意料的。用户没有任何指示(通过代码)出错。请考虑抛出异常。
private int _sid;
public int Sid
{
set
{
if (value <= 0)
throw new InvalidOperationException("Id must be positive.");
_sid = value;
}
get => _sid;
}
private int\u sid;
公共int Sid
{
设置
{
if(值_sid;
}
因为您正在以递归方式重新设置属性。如果要使用这种形式的属性,则需要一个备份字段
private int _sid;
public int Sid
{
set
{
if (value <= 0)
throw new InvalidOperationException("Id must be positive.");
_sid = value;
}
get => _sid;
}