首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么布尔值切换为"true“而不是false?

为什么布尔值切换为"true“而不是false?
EN

Stack Overflow用户
提问于 2019-06-10 05:17:21
回答 1查看 138关注 0票数 0

在我的listview适配器类中,我有一个委托来为列表视图中的每个按钮分配一个函数。这个按钮应该在我的"Spices“对象中切换一个名为cupboard的布尔值。它在第一次单击时起作用,并将其更改为"true“。但它不会再回到false。你知道是什么原因导致它不能再次设置为false吗?这是我在这里的第一篇文章,如果是重复的,我深表歉意。

我尝试将默认值"false“更改为具有getter和setter,并尝试使用不同的if/else语句来切换布尔值。

这来自GetView()函数中的自定义listView适配器:

代码语言:javascript
复制
Button AddToCupboard = row.FindViewById<Button>(Resource.Id.AddToCupboard);
//Adds onclick event for "Add to cupboard"

AddToCupboard.Click += delegate
{
    var item = mItems[position].cupboard;
     item = !item;
    Console.WriteLine(item);
};

我的Spice类:

代码语言:javascript
复制
class Spice
{
    public string name { get; set; } 
    public string flavour { get; set; }
    public string picture { get; set; }
    public string substitute { get; set; }
    public string description { get; set; }
    public string uses { get; set; }


    public bool cupboard { get; set; }
    public bool list { get; set; }
}

我期望控制台在同一个按钮按下两次时输出True,然后输出False,但它只是停留在true

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-10 05:22:19

这是因为您实际上并没有更改cupboard对象中的Spice值。

代码语言:javascript
复制
AddToCupboard.Click += delegate
{
    var mItem = mItems[position];
    mItem.cupboard = !mItem.cupboard;
}

在您的示例中,您可以将cupboard值复制到一个局部变量中,将其从T切换为F,仅此而已。mItems数组将保持不变,因为所有操作都是在感兴趣的变量的副本上完成的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56518430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档