考虑这个场景
Public static Class GlobalParam
{
//static classes strings int and more...
class NoneStaticClass
{
//some noneStatic params
}
}
在另一个class
(非静态)我调用 NoneStaticClass
的实例以这种方式
GlobalParam.noneStaticClass NSC = new GlobalParam.noneStaticClass();
//some manipulation on NSC params
后来我用这样的方法
void DoSomething(GlobalParam.noneStaticClass nsc)
{
GlobalParam.noneStaticClass NewNSC = nsc
//Some manipulation in NewNSC
}
现在当我检查NSC中存储的数据时,我可以清楚地看到它已被更改,这是为什么? 将非静态类放入静态中是否在某种程度上是不正确的?
最佳答案
无论您的类是嵌套类还是普通类,每当您执行诸如 GlobalParam.noneStaticClass NewNSC = nsc
之类的分配时,NewNSC
和 nsc
都会始终引用同一个对象。
如果您想要 NSC 对象的副本,可以使用以下一些方法来实现:
- 如果你的类中所有成员都是值类型,你可以使用结构体 而不是类。每次做作业时都会复制它 和。
- 如果没有,您应该引用对象 cloning
关于c# - 静态类中没有静态嵌套类 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24775086/