gpt4 book ai didi

c# - 如何比较 FieldInfo 的实例值?

转载 作者:太空宇宙 更新时间:2023-11-03 19:25:10 26 4
gpt4 key购买 nike

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

myClass instance1 = new myClass();
myClass instance2 = new myClass();
FieldInfo[] fields = typeof(myClass).GetFields();
foreach (FieldInfo field in fields) if (field.GetValue(instance2) == field.GetValue(instance1)) Text = "Yes";
}
}

class myClass
{
public bool b = false;
public int i = 2;
}

从不返回"is"。

编辑:没有事先知道类型是什么。所以我不能有:(bool)field.GetValue(instance1)

最佳答案

您正在使用 ==,它将比较类型为值类型的任何字段的装箱值。每次装箱一个值时,它都会创建一个新对象,因此 == 永远不会那样工作。使用 object.Equals 代替:

 foreach (FieldInfo field in fields)
{
if (object.Equals(field.GetValue(instance2), field.GetValue(instance1))
{
Text = "Yes";
}
}

(这里使用静态方法意味着即使值为 null 也能正常工作。)

关于c# - 如何比较 FieldInfo 的实例值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9269597/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com