我正在尝试获取用户输入并检查其是否是用户输入的最大数字;最大数量应该保存到maxResult
变量,我试图这样做得到并设置由C#使用
以下是代码:
//Number entred by user
private static int intJudgeResult { get; set; }
// varibale where to save the max entred number
private static int _maxresult;
private static int maxResult {
get
{
return _maxresult;
}
set
{
if (intJudgeResult > intJudgeResult )
maxResult = intJudgeResult ;
}
}
我知道男人可以轻松设置maxResult = intJudgeResult
,但我想尝试第一次使用get和set:P
问题在于_maxresult
永远不会被任命,任何想法如何解决这个问题。
答案 0 :(得分:2)
这里有几个错误......
这永远不会成真:
if (intJudgeResult > intJudgeResult)
我认为你的意思是:
if (intJudgeResult > _maxResult)
此外,这是一个等待发生的堆栈溢出异常:
maxResult = intJudgeResult;
您的意思是设置支持变量,而不是属性:
_maxResult = intJudgeResult;
(在属性中设置属性会导致setter无限调用自身。)
至于初始化值...由于它是int
,因此默认为0
。值类型必须具有值。如果您愿意,可以随时将其初始化为其他内容:
private static int _maxresult = 1;
任何关于不初始化值的编译器警告可能是上面第二个问题的结果,因为您没有自己设置值。
答案 1 :(得分:0)
首先不要过度使用静电。
//Number entered by user
private int _judgeResult
private int JudgeResult {
get
{
return _judgeResult;
}
set
{
_judgeResult = value;
if (MaxResult < value)
MaxResult = value;
}
}
// variable where to save the max entered number
private int _maxresult;
private int MaxResult {
get
{
return _maxresult;
}
set
{
_maxresult = value;
}
}
答案 2 :(得分:0)
你的二传手不正确,你有几个问题。
第一个问题是maxResult = intJudgeResult;
应为_maxResult = intJudgeResult
。
现在你的方式应该是无限循环。仅此更改不会解决您的问题
你的第二个问题是条件intJudgeResult > intJudgeResult
永远不会成真。
第三个问题是你没有使用特殊变量value
来接受输入值到属性。
我认为这就是你想要的,虽然我会说属性可能不是最好的方法
//Number entred by user
private static int _intJudgeResult;
private static int intJudgeResult
{
get
{
return _intJudgeResult; //EDIT: Missed the _ before
}
set
{
intJudgeResult = value;
maxResult = intJudgeResult;
}
// varibale where to save the max entred number
private static int _maxresult = 0;
private static int maxResult
{
get
{
return _maxresult;
}
set
{
if (value > intJudgeResult )
_maxResult = value;
}
}
答案 3 :(得分:0)
在您的示例代码中,_maxresult
成员是标准静态字段。以与任何其他字段相同的方式初始化它:
private static int _maxresult = 0;
如果要延迟初始化,则需要某种方式来指示该字段尚未初始化。对于int
,您可以将一些无效值指定为字段初始值设定项,然后在属性的get
方法中测试该值。
答案 4 :(得分:0)
这可以解决问题:
public static int _judgeresult;
private static int judgeResult
{
get { return _judgeresult; }
set {
_judgeresult = value;
if (value > MaxValue)
MaxValue = value;
}
}
private static int MaxValue { get; set; }