gpt4 book ai didi

c# - 访问从属性自动生成的值类型

转载 作者:行者123 更新时间:2023-11-30 20:05:02 26 4
gpt4 key购买 nike

在谈论自动生成的属性时,大多数示例都在谈论“简单”值类型,例如字符串。但是,如果您想访问在 IL 中自动生成的此类值类型的字段以备份“自动属性”怎么办?

编译器不允许这样做:“无法修改‘Position’的返回值,因为它不是变量”。我明白为什么我们不能修改这个返回值,但我们将如何访问这些字段?

假设我们有

class A
{
Vector2 Position { get; set; }

public void Foo()
{
Position.X = 10.0f; // Not allowed!
}
}

如何访问和设置 A 类中 Vector2 实例的字段 X?

最佳答案

Accessing reference types that are automatically generated from properties

您的问题是 Vector2 不是引用类型;它是一种值类型。当您访问属性 Position 时,会返回一个副本,因此您正试图改变一个临时文件。在这种情况下,您需要设置一个全新的值:

Position = new Vector2(10.0, Position.Y);

在这种情况下,您还可以创建一个私有(private)字段而不使用自动属性:

class A
{
Vector2 _position;
Vector2 Position
{
get { return _position; }
set { _position = value; }
}

public void Foo()
{
_position.X = 10.0f;
}
}

文档:http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.vector2.aspx

关于c# - 访问从属性自动生成的值类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12028703/

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