c# - 静态类中没有静态嵌套类 C#

标签 c# static

考虑这个场景

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 之类的分配时,NewNSCnsc 都会始终引用同一个对象。

如果您想要 NSC 对象的副本,可以使用以下一些方法来实现:

  • 如果你的类中所有成员都是值类型,你可以使用结构体 而不是类。每次做作业时都会复制它 和。
  • 如果没有,您应该引用对象 cloning

关于c# - 静态类中没有静态嵌套类 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24775086/

相关文章:

java - 反射:在静态方法中获取调用对象

c# - 设置给定位数的整数到字节

c# - 如何使用 C# 将月或日转换为 2 位数字字符串

c# - 在C#中使用Bing API

c# - 文件被复制到 SysWOW64 而不是 System32

python - 在 Django 1.6 中提供图像

通过 NULL 指针访问 C++ 静态常量

php - 为什么不能在 PHP 中从抽象类中调用抽象函数?

c# - 使用 C# 在 Windows 窗体应用程序上读取和显示 CSV 文件中的数据

c# - 使用静态方法的充分理由?