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

时间:2014-06-18 11:39:05

标签: c#

这就是我所拥有的:

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

漂浮&#34; fout&#34;具有简单计算&#34; f1 * 2&#34; 在我的项目中,计算更复杂,并使用大约4个局部变量。 在上面的例子中,我必须输入两次相同的计算:&#34; f1 * 2&#34;这是我试图避免的。

我知道我可以使用函数来完成它:

        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++;
        }

制作&#34; fout&#34;引用我的计算,而不是仅仅分配它的值。如果是这样,那么正确的语法是什么?

编辑: 谢谢你:幽灵和暗言。 这就是我想要的:

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

1 个答案:

答案 0 :(得分:2)

如果我理解正确,你可以简单地使用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++;
}

所有本地变量都可以自动访问。