【问题标题】:C# How to store a float and read it in a functionC#如何存储一个浮点数并在函数中读取它
【发布时间】:2018-11-22 18:27:57
【问题描述】:

我对编程很陌生,我知道这是一个简单的答案,但我一辈子都想不通。

    public float getCurrentY()
    {
        float CurrentY = API.Extension.ReadFloat(Variables.CIT_PLAYER_Y_COORD);
        return CurrentY;
    }

当我选中切换框时,它会获取当前的 Y

    private void CITFlightTestToggle_CheckedChanged(object sender, EventArgs e)
    {
        if (CITFlightTestToggle.Checked == true)
            {

            getCurrentY();
            }

            else if (CITFlightTestToggle.Checked == false)
            {

            }
    }

我基本上想要玩家检查切换框时当前原因的值,然后将来自轨迹栏的值添加到该存储值上。问题是当您移动轨迹栏时它会不断获取 currentY,并且由于我正在添加它,因此当前 Y 一直在变化。

        private void CITFlyingHeightTrackBar_Scroll_1(object sender, ScrollEventArgs e)
        {
        float diviedflyingheight = CITFlyingHeightTrackBar.Value / 10f;
        float current_num = getCurrentY();
        float flyingheightadded = current_num + diviedflyingheight;
        if (CITFlightTestToggle.Checked == true)


            if (levelchecktext == Variables.CIT_LVL_GREAT_CLOCK_A)
            {

                API.Extension.WriteFloat(Variables.CIT_GCA_Y_COORD, (flyingheightadded));
            }
            else
            {
            }
         }

提前致谢

【问题讨论】:

  • 一个“get”类型的调用应该是一个函数。 CurrentY 听起来不应该是一个字符串。 public float GetCurrentY() 可能应该是这样写的,并让它返回值。摆脱 CITCurrentYString ,因为您只有该方法的本地,因此您永远无法使用该值。

标签: c# function floating-point


【解决方案1】:

欢迎堆栈溢出

您在方法声明中看到“void”这个词吗?这就是返回类型。您将其更改为字符串,然后使用“return”关键字选择它返回的值。

public string getCurrentY()
{
    string CITCurrentYString = null;
    float CurrentY =  API.Extension.ReadFloat(Variables.CIT_PLAYER_Y_COORD);
    CITCurrentYString = (CurrentY.ToString());
    return CITCurrentYString;
}

您转换为字符串有什么原因吗?看起来你真的需要一个花车。像这样

public float getCurrentY()
{
    float CurrentY =  API.Extension.ReadFloat(Variables.CIT_PLAYER_Y_COORD);
    return CurrentY;
}

private void CITFlyingHeightTrackBar_Scroll_1(object sender, ScrollEventArgs e)
{
    float current_num = getCurrentY();
}

【讨论】:

  • 更短,float current_num = API.Extension.ReadFloat(Variables.CIT_PLAYER_Y_COORD);,假设 API 是命名空间或静态类
  • 是的,我看到了,但由于这是 OP 的第一个问题,我认为回答“我如何返回值”问题更重要
  • 感谢您的帮助。问题是我不希望每次移动轨迹栏时都写入 currentY。我基本上希望存储该浮点数,然后将轨迹栏值添加到它上面。最初我创建了一个标签使其不可见,只是将浮点数转换为文本并解析它,这就是我存储值的方式(您选择一个复选框,然后它调用 getCurrentY)但我认为必须有更好的方法
  • 啊哈,看起来我们这里有一个 XY 问题。 meta.stackexchange.com/questions/66377/what-is-the-xy-problem你实际在哪里使用这个值?
  • 我更新了我的原始代码以显示它。 XY 问题正是我现在正在尝试学习的正确方法大声笑
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多