注意:我的问题有几个部分.如果您愿意回答每个问题,我会很感激,而不是简单地告诉我该怎么做才能编译.:)
我对C#没有任何好处.事实上,我不太了解它的原因是我的课程专注于制作有效的算法,而不是真正教我们.NET.尽管如此,我们所有的程序都必须用.NET编写,直到现在才出现问题.我有以下代码,但它不会编译,我不明白为什么.我有一种直觉,认为这应该完全改写,但在我这样做之前,我想知道为什么不允许这样做.
结构的要点是创建一个类似结构的链表,这样我就可以在"列表"的末尾添加另一个节点,然后以相反的顺序遍历和调用节点
private struct BackPointer
{
public BackPointer previous;
public string a;
public string b;
public BackPointer(BackPointer p, string aa, string bb)
{
previous = p;
a = aa;
b = bb;
}
}
Run Code Online (Sandbox Code Playgroud)
然后在我的代码中我有一些效果
BackPointer pointer = new BackPointer();
pointer = new BackPointer(pointer, somestring_a, somestring_b);
Run Code Online (Sandbox Code Playgroud)
我得到的编译错误是 Struct member 'MyClass.BackPointer.previous' of type 'MyClass.BackPointer' causes a cycle in the struct layout
这似乎是一个明显的错误.它不喜欢我在同一结构的构造函数中传递结构的事实.但为什么不允许这样做?我想这个代码只会在列表中创建一个新节点并返回该节点,并返回前一个节点,但显然不会发生这种情况.那么实际会发生什么呢?最后解决这个问题的推荐方法是什么?我想只是告诉它不受管理只是手动处理我的指针,但我真的只知道如何在C++中做到这一点.我真的不知道C#会出现什么问题
| 归档时间: |
|
| 查看次数: |
450 次 |
| 最近记录: |