C ++到C#代码转换,引用与值类型的麻烦

时间:2014-09-12 15:49:54

标签: c# c++

首先,对于可能令人困惑的标题感到抱歉,每当有人知道更合适的标题时,请随时更改。

我正在将数学库从C ++移植到C#。移植实际代码是在几天内完成的。但是,我一直在努力解决因C#类是引用类型而不是C ++类是值类型而引入的所有错误。

让我解释一下:如果我在C ++中有一个具有嵌套类Bar的Class Foo,并且如果我将一个现有的Bar实例分配给Foo,我实际上是在复制它,如果C ++编译器知道这样做的话(如果我当然没有使用指针)

如果我在C#中做同样的事情,我会分配一个参考。这导致难以置信的副作用。如果在C#中,我的代码稍后在将其分配给Foo后修改我的Bar实例,那么当然也会修改Foo.Bar对象。不好。

所以我的问题是:当我假设我分配了副本时,是否有一种简单的方法或最佳实践方法可以在我的代码中找到指定位置的位置? 我甚至考虑每次在对象上调用getter时创建一个新对象,并在那里复制值。当然这意味着我再也不能对一个物体表示崇敬。再一次,不好。

基本上我要问的是:如何找到每个出现的赋值运算符(=),其中TARGET是一个引用类型?这是我需要改变的那些代码行。

我尝试通过简单地搜索'='字符手动完成,但是在搜索了成千上万行代码后,我仍然错过了偶尔的分配目标。

1 个答案:

答案 0 :(得分:6)

您应该查看C#的struct功能而不是class。结构是值类型。