草庐IT

c# - 如何在 C# 中找到对象的所有公共(public)字段?

我正在构造一个方法来接收ArrayList(可能充满对象),然后列出ArrayList中每个对象的所有字段(及其值)。目前我的代码如下:publicstaticvoidListArrayListMembers(ArrayListlist){foreach(Objectobjinlist){Typetype=obj.GetType();stringfield=type.GetFields().ToString();Console.WriteLine(field);}}当然,我理解这段代码的直接问题:如果它有效,它只会为ArrayList中的每个对象打印一个字段。我稍后会解决这个问题-现在

c# - 是否可以在 C# 中创建没有类的对象?

在许多语言中,您可以在不创建数据类型的情况下创建对象,并向该对象添加属性。例如在JS或AS中:varmyObject={};myObject.myParameter="helloworld";或者您可以使用C和C++创建结构。可以用C#实现吗? 最佳答案 AnonymousTypes是你要找的。例如-varv=new{Amount=108,Message="Hello"};以上代码将创建一个新的对象,其属性为Amount和Message。 关于c#-是否可以在C#中创建没有类的对象?,我

c# - NullToVisibilityConverter 如果不为空则使可见

想要在ListView中隐藏和显示SelectedItem的属性网格所以我需要转换器并在可见性属性转换器中使用它。有帮助吗? 最佳答案 publicclassNullVisibilityConverter:IValueConverter{publicobjectConvert(objectvalue,TypetargetType,objectparameter,CultureInfoculture){returnvalue==null?Visibility.Hidden:Visibility.Visible;}publicobjec

c# - 我可以在 C# 中的按钮内存储一个对象吗

我在我的代码中动态创建按钮,有没有一种方法可以在我的按钮中存储自定义对象,以便在我按下此按钮时使用它? 最佳答案 考虑使用命令模式并将命令绑​​定到按钮的Commandproperty并使用CommandParameterProperty存储您的对象。单击按钮时,将使用CommandParameter(包含您的对象)作为参数调用命令的Execute方法。最好知道您正在处理的场景。只要您不构建自定义控件,通过代码生成XAML就表明您可能走错了路。大多数事情都可以通过数据绑定(bind)和转发器控件(例如列表框、菜单、数据网格等)来完成

c# - 装箱和拆箱 : when does it come up?

所以我明白了什么是装箱和拆箱。它什么时候出现在现实世界的代码中,或者在什么例子中它是一个问题?我无法想象做这样的事情:inti=123;objecto=i;//Boxingintj=(int)o;//Unboxing...但这几乎可以肯定是过于简单化了,我什至可能在不知不觉中进行了装箱/拆箱。 最佳答案 与泛型之前相比,现在问题不大了。现在,例如,我们可以使用:Listx=newList();x.Add(10);inty=x[0];根本不需要装箱或拆箱。以前,我们有:ArrayListx=newArrayList();x.Add(1

c# - 删除小时数 :seconds:milliseconds in DateTime object

我正在尝试从DateTime对象创建一个字符串,它产生格式mm:dd:yyyy。通常DateTime对象以mm:dd:yyyyhrs:min:secAM/PM的形式出现。有没有办法快速删除DateTime的hrs:min:secAM/PM部分,这样当我将它转换为ToString()时,它只会导致在mm:dd:yyyy? 最佳答案 要回答您的问题,不-您必须将其存储在不同的类型中。最简单的选择是使用字符串。stringdate=dateTime.ToString("MM:dd:yyyy");不过,我也强烈建议不要在程序内部将日期作为字

c# - 以对象为值的字典

我在这里疯了。这可能是因为我错过了一些规则,但如果是这样,请告诉我。我正在尝试创建一个Dictionary,其中一个字符串作为键,一个匿名对象作为值。或者,实际上我不只是在尝试,我正在做。但是当我想改变对象中的特定参数时,它出错了。我这样声明字典:varareas=newDictionary{{"Key1",new{name="Name1",today=0,all=0}},{"Key2",new{name="Name2",today=0,all=0}},...}然后我假设我可以做到这一点:foreach(varareainareas.Keys.ToArray()){varareanam

c# - "Object reference not set to an instance of an object": why can't . NET 显示更多细节?

“对象引用未设置到对象的实例”为什么异常不显示对象引用字段的名称,或者至少不显示它的类型?这可能是.NET中最常见的运行时错误之一。尽管System.Exception有堆栈跟踪,但没有其他有用的详细信息。在一年的时间里,我花了几个小时筛选堆栈跟踪(通常是在我没有编写的代码中),希望有一个来自“.pdb”文件的行号,然后在代码中找到该行,甚至那么该行中的哪个引用为空通常并不明显。拥有引用字段的名称会非常方便。如果System.ArgumentNullException实例可以显示方法参数的名称(“值不能为空。参数名称:值”),那么System.NullReferenceExceptio

c# - 在 C# 中跟踪所有对象引用

是否可以在VisualStudio中调试时列出对象的所有引用。我正在使用C#。我正在寻找类似于GC在垃圾收集期间所做的事情。 最佳答案 SOS可以为您做到这一点。它没有集成到调试器中,但您可以将它附加到正在运行的进程中。您可能会发现使用SOSAssist比学习控制台语法更有帮助。IIRC:!dumpheap–type{type} 关于c#-在C#中跟踪所有对象引用,我们在StackOverflow上找到一个类似的问题: https://stackoverflo

c# - 如何复制一个实际上是结构的对象(不是它的引用)?

我有一个值(结构实例)被转换为object以进行通用处理。我需要复制该值。我不能明确地这样做,因为我只有它的Type并且不知道它在编译时是什么。默认情况下,我会得到一个引用副本:varcopy=objectOfMyStruct;。我考虑过通过MemberwiseClone()进行显式浅拷贝,但我不能这样做,因为它是protected方法,我不能修改MyStruct。Convert.ChangeType(objectOfMyStruct,typeOfMyStruct)没有帮助,因为转换(实际上没有转换)发生在内部并再次返回Object。我该怎么做?编辑:我需要制作一份副本以保留原始值并反