c#引用我的计算,而不是在分配浮点数时仅取其值

本文关键字:浮点数 分配 我的 引用 计算 | 更新日期: 2023-09-27 18:09:12

我有:

        float f1 = 1;
        float f5 = 10;
        float fout = f1 * 2;
        while (f1 * 2 < f5)
        {
            f1++;
        }

浮点数"fout"的值为"f1 * 2"的简单计算值在我的项目中,计算更复杂,使用大约4个局部变量。在上面的例子中,我必须输入两次相同的计算:"f1 * 2",这是我试图避免的。

我知道我可以使用一个函数:

        float f1 = 1;
        float f5 = 10;
        float fout = calc(f1);
        while (calc(f1) < f5)
        {
            f1++;
        }
        FUNCTION:
        float calc(float inn)
        {
            return inn * 2;
        }

但是这也会看起来很难看,因为在我的实际项目中,我将不得不向函数传递4个局部变量,并且最终将创建大量只使用两次的小函数。

但是我可以这样做吗?

        float f1 = 1;
        float f5 = 10;
        float fout = ref (f1 * 2);
        while (fout < f5)
        {
            f1++;
        }

使"4"引用我的计算,而不是仅仅取其值,因为它被分配。如果是,正确的语法是什么?

编辑:谢谢你:Spook和undermind。这就是我要找的:

        float f1 = 1;
        float f5 = 10;
        Func<float> fout = () => f1 * 2;
        while (fout() < f5)
        {
            f1++;
        }

c#引用我的计算,而不是在分配浮点数时仅取其值

如果我理解正确的话,您可以简单地使用lambda。嗯,c风格语言缺少子函数…

float f1 = 1;
float f5 = 10;
Func<float> fout = () => f1 * 2;
while (fout() < f5)
{
    f1++;
}

或者(根据您的需要):

float f1 = 1;
float f5 = 10;
Func<float, float> fout = (param) => param * 2;
while (fout(f1) < f5)
{
    f1++;
}