|
1
218
这是因为
因此,当您访问
如果你想改变的话
|
|
|
2
11
您需要将整个点值指定给原点特性:-
问题是当您访问Origin属性时
即使您使用自己的支持变量
您仍然会返回点结构的副本,并且会得到相同的错误。 隐马尔可夫模型。。。仔细阅读您的问题后,您可能实际上想直接在类中修改支持变量:-
是的,那正是你需要的。 |
|
|
3
7
到现在为止,您已经知道错误的来源。如果构造函数不存在,则重载将获取您的属性(在本例中
这是可能的,因为在幕后会发生这种情况:
一点也不推荐。只是列出另一种方法。更好的方法是使结构不可变并提供适当的构造函数。 |
|
|
4
2
除了讨论结构和类的利弊之外,我倾向于从这个角度看待目标和解决问题。
|
|
|
5
0
问题是您指向堆栈上的一个值,该值不会重新影响到原始属性,因此C#不允许您返回对值类型的引用。我认为您可以通过删除Origin属性来解决这个问题,而是使用公共字段,是的,我知道这不是一个好的解决方案。另一种解决方案是不使用点,而是创建自己的点类型作为对象。 |
|
|
6
0
我想这里的问题是您试图在语句中分配对象的子值,而不是分配对象本身。在这种情况下,需要指定整个点对象,因为特性类型为点。
希望我在那里讲得通 |
|
|
7
0
只需删除属性“getset”,如下所示,然后一切照常工作。 如果是基元类型instread,则使用get;设置
|
|
|
8
0
我想很多人都感到困惑, 这一特殊问题与理解该值类型有关 性质 返回值类型(与方法和索引器一样)和值类型的副本 领域 . 下面的代码正是通过直接访问属性的支持字段来实现的(注意:用支持字段以详细形式表示属性等同于自动属性,但其优点是,在我们的代码中,我们可以直接访问支持字段):
您得到的错误是不理解属性返回值类型副本的间接结果。如果返回值类型的副本,并且未将其分配给局部变量,则无法读取对该副本所做的任何更改,因此编译器将此作为错误,因为这不是故意的。如果将副本指定给局部变量,则可以更改X的值,但它只会在局部副本上更改,这会修复编译时错误,但不会达到修改Origin属性的预期效果。以下代码说明了这一点,因为编译错误已消失,但调试断言将失败:
|
|
|
wavesinaroom · 断言结构向量长度 1 年前 |
|
fghoussen · 在C结构体中,为什么打包、对齐似乎会进行填充? 1 年前 |
|
|
kamkow1 · 匿名结构的初始值设定项错误无效 1 年前 |