【问题标题】:Private Set property not retaining its new valuePrivate Set 属性未保留其新值
【发布时间】:2019-06-24 14:59:00
【问题描述】:

解决我正在构建的测试应用程序的问题,但我似乎不知道该怎么做。该应用程序本质上是一个问卷调查,将在使用同一设备的两个不同的人之间传递。

但是,当我有一个 CurrentQuestion 的私有设置器时,该值在被发送到新版本的活动时永远不会保持修改。它始终保持其原始值 1(尽管所有其他值都保持修改)。但是在调试时,我确实看到属性值增加了 1,只是没有保留。

一旦我删除了私有设置器,它就会自行解决,并且会像往常一样递增,但我知道这是不好的做法,所以我想找到正确的方法。

任何帮助或指导将不胜感激,因为我觉得我尝试了多种不同的方法,但都没有运气。

【问题讨论】:

  • 似乎应该可以。如果将它们分开放置会发生什么。移动“myQuiz.NextQuestion();”到 OnCreate 的顶部并移动“Question question = repository.GetQuestionById(myQuiz.CurrentQuestion);”到 OnCreate 的底部。也许值在计算完成之前就被传递了?
  • 我之前也想过这个问题,但是在 OnCreate 中移动它们做不同的事情似乎对这种情况根本没有帮助。
  • 能否请您发布一个基本演示,以便我们进行测试?

标签: c# .net xamarin android-intent xamarin.android


【解决方案1】:

像这样设置自动端口假设所有对该属性的访问和修改都将直接通过该属性本身完成,而不是使用您正在执行的方法来增加该属性。根据您在这里所做的事情,我会推荐这种可能的解决方案来解决您的问题。

为属性设置一个支持字段并在您的 NextQuestion 方法中增加它。

private int _currentQuestion;
public int CurrentQuestion => _currentQuestion;

public void NextQuestion()
{
    _currentQuestion++;
}

【讨论】:

  • 不幸的是,这并没有什么不同,最终还是回到了原来的值。
  • 很奇怪,但 public int CurrentQuestion { get; set; } 对你来说很好用吗?
猜你喜欢
  • 2020-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多