【问题标题】:'cannot be used in this context because it lacks the get accessor''不能在此上下文中使用,因为它缺少 get 访问器'
【发布时间】:2017-10-15 05:28:53
【问题描述】:

我刚刚开始学习 c#,并且对它的工作原理有了非常基本的了解。我不断收到此代码中“player.HasGravity”行的错误代码“CS0154”:

using GTA;
using System;
using System.Collections.Generic;
using GTA.Math;
using GTA.Native;
using System.Windows.Forms;

public class SuperJump : Script
{
    public SuperJump()
    {
        Tick += OnTick;
        KeyDown += OnKeyDown;
        KeyUp += OnKeyUp;
        Interval = 10;
    }

    void OnTick(object sender, EventArgs e)
    {
    }

    void OnKeyDown(object sender, KeyEventArgs e)
    {
    }

    void OnKeyUp(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Space)
        {
            Ped player = Game.Player.Character;
            player.HasGravity
        }
    }
}

错误信息是:

属性或索引器“Entity.HasGravity”不能在此上下文中使用,因为它缺少 get 访问器。

我看过一些有类似问题的帖子,但我仍然不明白问题是什么。

【问题讨论】:

  • 听起来像 HasGravity是一个没有getter的属性。您没有包含该代码,所以这是一个猜测。
  • 拥有一个属性 Has.... 真的违反直觉,然后无法从中读取。这个 Ped 类的代码在哪里?

标签: c#


【解决方案1】:

检查您的 Character 类。 HasGravity 属性很可能没有定义 get 方法,像这样

class Character
{
    private bool hasGravity;
    public  bool HasGravity
    {
        set { hasGravity = value; }
    }
}

您需要执行以下操作来解决您的问题:

class Character
{
    private bool hasGravity;
    public  bool HasGravity
    {
        set { hasGravity = value; }
        get { return hasGravity;  }
    }
}

【讨论】:

  • 为什么不使用自动实现的属性?
  • 我可以,但问题的前提是他实现了 setter 而不是 getter,所以很可能他没有使用自动实现的属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-22
相关资源
最近更新 更多