当我为该条目设置变量并更改该变量时,为什么列表中的条目会被更改?

Janice_Feb_1998

我有看起来像这样的代码;

public ObservableCollection<ParamViewModel> ListOfPhrases{
   get => _listOfPhrases;
   set => SetProperty(ref _listOfPhrases, value);
}

public class ParamViewModel : ObservableObject
{

    bool _selected;
    int _id;
    string _name;
    string _state;

    public bool Selected { get => _selected; set => SetProperty(ref _selected, value); }
    public int Id { get => _id; set => SetProperty(ref _id, value); }
    public string Name { get => _name; set => SetProperty(ref _name, value); }
    public string State { get => _state; set => SetProperty(ref _state, value); }
}

private void OnPhraseTapped(string btnText)
{
   ListOfPhrases.ForEach(x => x.Selected = false);
   var first = ListOfPhrases.FirstOrDefault(x => x.Name == btnText);
   if (first != null) first.Selected = true;

因此,当btnText为ABC时,它将首先使用ListOfPhrases列表的元素进行填充。然后将first的值设置为true。

我的问题是。为什么更改first的Selected值会更改ListOfPhrases中的条目?

If I create this code:

var a = "ABC";
var b = a;
b = "x"

那我相信改变b不会改变价值a

保罗·卡尔顿

参考文献。

长话短说; 对象由REFERENCE分配而值类型是自我包含在它们自己的内存空间中的。

例:

// assume the constructor argument assigns to the public property Value
var listOfObjects = new List<SomeObject>() {
  new SomeObject(1),
  new SomeObject(2)
}

var a = listOfObjects[0];
var a.Value = 3;

// will print out 3 instead of 1
Console.WriteLine(listOfObjects[0].Value);

您将希望对此有所了解。这是在面向对象编程和C#中要理解的一个非常重要的概念。

为了理解这一点,我强烈建议阅读以下内容:

https://jonskeet.uk/csharp/references.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当我添加多个“&”时,为什么变量的地址会更改?

来自分类Dev

当我添加多个“&”时,为什么变量的地址会更改?

来自分类Dev

当我使用字典条目作为变量打印字符串时,为什么要添加“可选”一词?

来自分类Dev

我的python代码正在更改列表中的变量,但我看不到它如何/为什么被更改

来自分类Dev

当我们将方法存储在变量中然后调用它时,为什么上下文对象更改为全局窗口对象?

来自分类Dev

当我不调用取消设置的href时,为什么我的会话变量未设置

来自分类Dev

为什么对变量所做的更改反映在列表中?

来自分类Dev

为什么在我的帖子中输入Enter时我的博客帖子条目为空?

来自分类Dev

为什么我无法在代码中更改哑变量?

来自分类Dev

当一个类的实例变量在列表中时,如何更改该实例变量

来自分类Dev

当存储该引用的局部变量设置为null时,为什么静态变量没有设置为null?

来自分类Dev

为什么当我重载数组运算符时我的私有变量为零?

来自分类Dev

当我仅尝试更改一个列表元素时,为什么我的代码会更改多个列表元素?

来自分类Dev

我的变量更改了设置为的变量的值

来自分类Dev

为什么当我使用AJAX中的POST将数据发送到PHP时,它说变量为null?

来自分类Dev

当我尝试在jquery中更改.attr时,为什么值会更改

来自分类Dev

为什么当我在 TS 中更改对象副本时,原始副本也会更改?

来自分类Dev

当我只有一个条目时,为什么KeepassXC自动输入提示我选择条目?

来自分类Dev

更改嵌套列表中的特定条目

来自分类Dev

为什么当我将存储在一个变量中的对象分配给另一个变量时,当我更改一个变量时,这两个变量都会发生变化?

来自分类Dev

当我使用变量String时,更改alertDialog标题的颜色

来自分类Dev

为什么当我们调用“任务”变量时,必须将其写为“ task()”

来自分类Dev

猫鼬无法将“”的属性设置为undefined,每当我尝试创建新条目时。

来自分类Dev

为什么当我的条件为true时我的if循环会被跳过?

来自分类Dev

当我在列表视图中滚动时,图像会被打乱或更改

来自分类Dev

当我在列表视图中滚动时,ListView-图像会被拖曳或更改

来自分类Dev

当我提交表单时,Spring仅在启动时注入我的类,我的变量为null为什么?

来自分类Dev

为什么某些条目会被替换?

来自分类Dev

当我将YScale设置为log时,为什么我的XTickLabels在MATLAB中消失了?

Related 相关文章

  1. 1

    当我添加多个“&”时,为什么变量的地址会更改?

  2. 2

    当我添加多个“&”时,为什么变量的地址会更改?

  3. 3

    当我使用字典条目作为变量打印字符串时,为什么要添加“可选”一词?

  4. 4

    我的python代码正在更改列表中的变量,但我看不到它如何/为什么被更改

  5. 5

    当我们将方法存储在变量中然后调用它时,为什么上下文对象更改为全局窗口对象?

  6. 6

    当我不调用取消设置的href时,为什么我的会话变量未设置

  7. 7

    为什么对变量所做的更改反映在列表中?

  8. 8

    为什么在我的帖子中输入Enter时我的博客帖子条目为空?

  9. 9

    为什么我无法在代码中更改哑变量?

  10. 10

    当一个类的实例变量在列表中时,如何更改该实例变量

  11. 11

    当存储该引用的局部变量设置为null时,为什么静态变量没有设置为null?

  12. 12

    为什么当我重载数组运算符时我的私有变量为零?

  13. 13

    当我仅尝试更改一个列表元素时,为什么我的代码会更改多个列表元素?

  14. 14

    我的变量更改了设置为的变量的值

  15. 15

    为什么当我使用AJAX中的POST将数据发送到PHP时,它说变量为null?

  16. 16

    当我尝试在jquery中更改.attr时,为什么值会更改

  17. 17

    为什么当我在 TS 中更改对象副本时,原始副本也会更改?

  18. 18

    当我只有一个条目时,为什么KeepassXC自动输入提示我选择条目?

  19. 19

    更改嵌套列表中的特定条目

  20. 20

    为什么当我将存储在一个变量中的对象分配给另一个变量时,当我更改一个变量时,这两个变量都会发生变化?

  21. 21

    当我使用变量String时,更改alertDialog标题的颜色

  22. 22

    为什么当我们调用“任务”变量时,必须将其写为“ task()”

  23. 23

    猫鼬无法将“”的属性设置为undefined,每当我尝试创建新条目时。

  24. 24

    为什么当我的条件为true时我的if循环会被跳过?

  25. 25

    当我在列表视图中滚动时,图像会被打乱或更改

  26. 26

    当我在列表视图中滚动时,ListView-图像会被拖曳或更改

  27. 27

    当我提交表单时,Spring仅在启动时注入我的类,我的变量为null为什么?

  28. 28

    为什么某些条目会被替换?

  29. 29

    当我将YScale设置为log时,为什么我的XTickLabels在MATLAB中消失了?

热门标签

归档