C# 在不创建对象的情况下访问非静态字段

C# 在不创建对象的情况下访问非静态字段,c#,oop,nunit,nsubstitute,C#,Oop,Nunit,Nsubstitute,我对c#缺乏经验,我想问一下,是否有任何方法可以在不创建对象的情况下访问非静态字段 我正在单元测试一个程序(所以我不能改变类的编写方式),我的目标是得到字段的初始化值。这里的问题是构造函数更改了一些字段值 如果有任何建议,我将不胜感激。这是不可能的,因为根据定义,非静态字段属于某个对象。但是,有一种方法可以在不调用构造函数的情况下创建对象-请参阅。这是不可能的,因为非静态字段根据定义属于某个对象。但是,有一种方法可以在不调用其构造函数的情况下创建对象-请参见。如果不创建对象,就无法访问非静态字段

我对c#缺乏经验,我想问一下,是否有任何方法可以在不创建对象的情况下访问非静态字段

我正在单元测试一个程序(所以我不能改变类的编写方式),我的目标是得到字段的初始化值。这里的问题是构造函数更改了一些字段值


如果有任何建议,我将不胜感激。

这是不可能的,因为根据定义,非静态字段属于某个对象。但是,有一种方法可以在不调用构造函数的情况下创建对象-请参阅。

这是不可能的,因为非静态字段根据定义属于某个对象。但是,有一种方法可以在不调用其构造函数的情况下创建对象-请参见。

如果不创建对象,就无法访问非静态字段

实现目标的唯一方法是编写一个不进行更改的构造函数


尽管我再三考虑:如果更改是构造函数的一部分,那么检查初始值对我来说没有意义。从使用此类对象的客户端对象的角度来看,这些更改没有效果,因为构造函数将在调用此对象之前完全执行。

如果不创建对象,就无法访问非静态字段

实现目标的唯一方法是编写一个不进行更改的构造函数


尽管我再三考虑:如果更改是构造函数的一部分,那么检查初始值对我来说没有意义。从使用此类对象的客户机对象的角度来看,这些更改没有任何效果,因为构造函数将在调用此对象之前完全执行。

虽然这不是您想要的,但您可以有两个构造函数,哪些是重载的-然后当您需要原始值时,调用第二个构造函数,它不会修改任何值,这到底意味着什么?实例字段在存在该类型的对象之前不存在。你能在没有狗的情况下宠物狗吗?:)回答你的
构造函数会改变一些字段
问题:编程是如何工作的。如果程序员决定让这个类以这种方式工作,那么您需要使用它。如果它看起来不合适或者不稳定,你需要告诉你的开发者(或者你自己?):是的,这是真的。我可能会找到另一种方法来测试这门课。谢谢虽然这不是您想要的,但是您可以有两个重载的构造函数,然后当您需要原始值时,调用第二个构造函数,它不会修改任何值,这意味着什么?实例字段在存在该类型的对象之前不存在。你能在没有狗的情况下宠物狗吗?:)回答你的
构造函数会改变一些字段
问题:编程是如何工作的。如果程序员决定让这个类以这种方式工作,那么您需要使用它。如果它看起来不合适或者不稳定,你需要告诉你的开发者(或者你自己?):是的,这是真的。我可能会找到另一种方法来测试这门课。谢谢嗯,有几个构造函数,每个构造函数做的事情都略有不同。最重要的是,改变磁场的方式是基于外部磁场。所以它不是以固定值初始化的。好吧,有几个构造函数,每个构造函数做的事情都略有不同。最重要的是,改变磁场的方式是基于外部磁场。因此,它不像是以固定值初始化的。