小编Kug*_*uBu的帖子

让lambda引用自己

我试图让lambda能够引用自己,一个例子:

PictureBox pictureBox=...;
Request(() => {
    if (Form1.StaticImage==null)
        Request(thislambda); //What to change to the 'thislambda' variable?
    else
        pictureBox.Image=Form1.StaticImage; //When there's image, then just set it and quit requesting it again
});
Run Code Online (Sandbox Code Playgroud)

当我试图将lambda放在变量中时,lambda引用自身,当然是错误.

我想用一种能够调用自身的方法来创建类,但我想坚持使用lambda.(虽然它到目前为止只给出了可读性,没有任何优点)

c# lambda

8
推荐指数
1
解决办法
1896
查看次数

交换内存块

有两种不同的内存块,大小不同.有没有办法在不分配新内存的情况下交换两个相同大小的部分?

c++ memory

5
推荐指数
1
解决办法
1624
查看次数

编译器是否能够优化意大利面条代码?

我正在编写一个最终生成C++代码的编译器,我无法使用while\for或任何其他正常循环,所以我将它转换为goto\if和assigments\call行如下:

if (i<b) goto loop_959__again;
loop_959__end: ;
}
{
int inumber;
int i;
i=0;
inumber=3;
if (!(inumber<30)) goto loop_4482__end;
loop_4482__again:
float fnumber;
_A1__main__increase(__owner);
i++;
inumber++;
fnumber=3;
loop_4482__step_begin:
if (inumber<30) goto loop_4482__again;
loop_4482__end: ;
}
Run Code Online (Sandbox Code Playgroud)

这看起来真的很痛苦,但是GCC编译器可以编译和优化上面的代码,好像它包含普通循环等吗?

c c++ gcc

4
推荐指数
1
解决办法
238
查看次数

Task.Delay与Task.Yield融合?

我正在尝试做类似光纤的代码,我可以进入任务并摆脱它.我试过的代码:

class TaskActivity {
    CancellationTokenSource _m=new CancellationTokenSource( int.MaxValue )
        ,_t=new CancellationTokenSource( int.MaxValue );

    public async Task PauseTask( ) { //call and await it when I want to pause task inside itself
        _m.Cancel( );
        _t = new CancellationTokenSource( int.MaxValue );
        while( !_t.IsCancellationRequested )
            await Task.Yield( );
    }
    public async Task ResumeTask( ) { //call and wait for it when I want to resume a task from the main context
        _t.Cancel( );
        _m = new CancellationTokenSource( int.MaxValue );
        while( !_m.IsCancellationRequested )
            await …
Run Code Online (Sandbox Code Playgroud)

c# task

1
推荐指数
1
解决办法
156
查看次数

在运行时构建一次性方法

我的程序随时创建新方法(使用MethodBuilderwith byte\IL数组),它执行一次并丢弃对它们的引用.我发现他们实际上并没有受到GC的影响.有没有办法让GC收集或处理它们?

我发现问题是要创建新方法,需要加载它后面无法卸载的程序集.我需要在主appdomain上运行这些方法.(它创建对象或修改一些对象)是否有替代方法MethodBuilder并且只执行那些byte\IL?

c# reflection.emit

1
推荐指数
1
解决办法
152
查看次数

如何实现随机函数,其中每个后续值比前一个值更不可能?

对于比较-标准的随机函数取数,比方说3,那么就意味着0,12每个人都有33%的机会返回.

我需要实现随机函数,让我们说它0.5意味着0有50%的机会返回,1是25%,2是12.5%,依此类推,直到无穷大.

我不能使用循环例如:

int SequencialRandom(double x)
{
    int result=0;
    while (DoubleRandom()>x) //DoubleRandom() returns randomized double that ranges from 0.0 to 1.0.
        result++;
    return result;
}
Run Code Online (Sandbox Code Playgroud)

因为当我0.01输入参数时,它平均会循环100次,而且性能很差.这个问题有很好的算法吗?

c++ random

1
推荐指数
1
解决办法
102
查看次数

初始化全局变量的问题

头文件

#ifndef H_MODEL_UTIL
#define H_MODEL_UTIL

#include "Mesh.h"

Mesh *kingHigh;

void InitModel();

#endif 
Run Code Online (Sandbox Code Playgroud)

源文件

#include "stdafx.h"
#include "ResourceLoader.h"
#include "ModelUtil.h"

void InitModel()
{
    ::kingHigh  = new Mesh();
}
Run Code Online (Sandbox Code Playgroud)

编译器输出:

1>Game.obj : error LNK2005: "class Mesh * kingHigh" (?kingHigh@@3PAVMesh@@A) already defined in Cube.obj

1>ModelUtil.obj : error LNK2005: "class Mesh * kingHigh" (?kingHigh@@3PAVMesh@@A) already defined in Cube.obj

1>C:\Users\Anthony\Desktop\C++ Learning\Extra\Rubiks Chess\Debug\Rubiks Chess.exe : fatal error LNK1169: one or more multiply defined symbols found
Run Code Online (Sandbox Code Playgroud)

我正在尝试初始化一个全局变量但我不断收到此错误.有简单的解决方案吗?

c++ global initialization

0
推荐指数
1
解决办法
132
查看次数

标签 统计

c++ ×4

c# ×3

c ×1

gcc ×1

global ×1

initialization ×1

lambda ×1

memory ×1

random ×1

reflection.emit ×1

task ×1