gpt4 book ai didi

c# - 从列表中设置 System.Windows.Point 的 Y 坐标会给出修改错误

转载 作者:行者123 更新时间:2023-12-02 05:06:30 24 4
gpt4 key购买 nike

当我从列表中访问某个点时,我在设置该点的 Y 坐标时遇到了一些问题。

例如,这行得通。

System.Windows.Point test = new System.Windows.Point(6,5);
test.Y = 6;

但是,如果我有一个点列表,并且我通过列表访问一个点来设置 Y 坐标,则会出现错误。

List<System.Windows.Point> bfunction = new List<System.Windows.Point>();
bfunction.Add(new System.Windows.Point(0, 1));
bfunction[0].Y = 6;

bfunction[0] 带有下划线并给我一个错误“无法修改‘System.Collections.Generic.List.this[int]’的返回值,因为它不是变量。”

如有任何帮助,我们将不胜感激。

最佳答案

基本上,编译器会阻止您犯错误。当您访问 bfunction[0] 时,它将返回该点的一个副本Point 不幸的是 (IMO) 是一个可变结构。因此,如果编译器允许您更改副本,那么该副本将被丢弃,并且该语句将毫无意义。相反,您需要使用一个变量来获取副本,在那里进行更改,然后将其放回列表中:

Point point = bfunction[0];
point.Y = 6;
bfunction[0] = point;

如果 Point 是一个引用类型,这就没有必要了,如果 Point 是一个 immutable 取而代之的是值类型。你仍然需要单独获取和设置,但它会是这样的:

bfunction[0] = bfunction[0].WithY(6);

... 其中 WithY 将返回一个 Point 值,该值与原始值具有相同的 X 值,但指定的 Y.

关于c# - 从列表中设置 System.Windows.Point 的 Y 坐标会给出修改错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16222757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com