Как в инициализаторе ссылаться на поля создаваемого объекта?
Инициализирую объект Player и мне нужно задать поле _startY от другого поля Position, а не получается, подскажите как решить эту проблему, c#

public class Player : Component
{
#region Fields
public Texture2D _texture;
public Vector2 Position;
public bool _jumping;
public float _startY = 0f;
public float _jumpspeed = 0f;
#endregion
#region Methods
public override void Draw(GameTime gameTime, SpriteBatch spriteBatch)
{
spriteBatch.Draw(_texture, Position, Color.White);
}
public override void Update(GameTime gameTime)
{
KeyboardState keyState = Keyboard.GetState();
if (_jumping)
{
Position.X += _jumpspeed;
_jumpspeed += 1;
if (Position.Y >= _startY)
{
Position.Y = _startY;
_jumping = false;
}
}
else
{
if (keyState.IsKeyDown(Keys.W))
{
_jumping = true;
_jumpspeed = -14;
}
}
}
}
protected override void LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
#region Player
_player = new Player()
{
_texture = Content.Load<Texture2D>("box"),
Position = new Vector2(400, 450),
_startY = Position.Y,
_jumping = false,
_jumpspeed = 0,
};
}
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Варианты.
Временная переменная:
var pos = new Vector2(400, 450);
_player = new Player()
{
_texture = Content.Load<Texture2D>("box"),
Position = pos,
_startY = pos.Y,
_jumping = false,
_jumpspeed = 0,
};
Инициализация в два этапа:
_player = new Player()
{
_texture = Content.Load<Texture2D>("box"),
Position = new Vector2(400, 450),
_jumping = false,
_jumpspeed = 0,
};
_player._startY = _player.Position.Y,
Вариант с конструктором мне лениво писать.