对不起,这个问题可能以不同的形式存在,但我真的到处搜寻,看不到它。
我曾在C ++工作,习惯了指针。我用C#模拟代码替换我的逻辑时遇到问题。
这是我的C#代码
read.table(..., stringsAsFactors=FALSE)
我希望数组成为将来直接添加到对象字段的实例的持有者。
答案 0 :(得分:0)
您永远不会为P1.A分配值,因此它仍为空。 实际上,您为数组[1]分配了两次值:第一次分配P1.A,第二次分配给X.没有任何关系bewtwen两个引用的值。
你可以认为C#引用(例如数组[1]或对象obj = new Object())类似于c ++指针。
在您的示例中,替换。使用 - >,并尝试思考它在c ++中的工作方式:它在c#中的工作方式相同
[编辑]
在c ++中你会写:
Son* P1 = new Son();
Parent* X = new Parent();
Parent* array[10]; // an array of 10 pointers
//TODO: zeromemory all elements of array, c++ does't iniziatialize pointers
array[1] = P1->A;
array[1] = X;
在c#中,您可以像这样编写上面的代码:
Son P1 = new Son();
Parent X = new Parent();
Parent array[10]; // an array of 10 reference to Parent, c# initialize all references to null
array[1] = P1.A;
array[1] = X;