小编Jea*_*rdi的帖子

F# - 什么是"it"关键字?

我是F#的新手,今天下午才开始学习它.

我注意到的是,当通过fsi获取类型信息时,我得到以下信息:

val it : (char list -> string -> string list) = <fun:clo@0>
Run Code Online (Sandbox Code Playgroud)

如果我理解正确,(char列表 - >字符串 - >字符串列表)意味着该函数采用char列表并返回一个函数,该函数接受一个字符串并返回一个字符串列表.

但是,我不明白"它"的用法.

感谢您的任何信息!

f#

18
推荐指数
2
解决办法
1435
查看次数

加速C#中的矩阵添加

我想优化这段代码:

public void PopulatePixelValueMatrices(GenericImage image,int Width, int Height)
{            
        for (int x = 0; x < Width; x++)
        {
            for (int y = 0; y < Height; y++)
            {
                Byte  pixelValue = image.GetPixel(x, y).B;
                this.sumOfPixelValues[x, y] += pixelValue;
                this.sumOfPixelValuesSquared[x, y] += pixelValue * pixelValue;
            }
        }
}
Run Code Online (Sandbox Code Playgroud)

这将用于图像处理,我们目前正在运行约200张图像.我们优化了GetPixel值以使用不安全的代码,我们没有使用image.Width或image.Height,因为这些属性增加了我们的运行时成本.

但是,我们仍然处于低速状态.问题是我们的图像是640x480,所以循环的中间被调用大约640x480x200倍.我想问一下是否有办法以某种方式加速它,或者让我相信它的速度足够快.也许一种方法是通过一些快速的Matrix Addition,或者Matrix Addition固有的n ^ 2操作无法加速它?

也许通过不安全的代码进行数组访问可以加快速度,但是我不知道如何去做,以及它是否值得花时间.可能不是.谢谢.

编辑:谢谢你的所有答案.

这是我们正在使用的GetPixel方法:

 public Color GetPixel(int x, int y)
    {
        int offsetFromOrigin = (y * this.stride) + (x * 3);
        unsafe
        {
            return Color.FromArgb(this.imagePtr[offsetFromOrigin + 2], this.imagePtr[offsetFromOrigin …
Run Code Online (Sandbox Code Playgroud)

c# image-processing

11
推荐指数
2
解决办法
3014
查看次数

C#随机数生成器卡在一个循环中

我正在使用.NET创建一个人工生命程序,我正在使用C#在Singleton中定义的伪随机类.我的想法是,如果我在整个应用程序中使用相同的随机数生成器,我只能保存种子,然后从种子重新加载以重新计算某个有趣的运行.

public sealed class RandomNumberGenerator : Random
{
    private static readonly RandomNumberGenerator instance = new RandomNumberGenerator();

    RandomNumberGenerator()
    {

    }

    public static RandomNumberGenerator Instance
    {
        get
        {
            return instance;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我还想要一个可以给我两个不同随机数的方法.

public static Tuple<int, int> TwoDifferentRandomNumbers(this Random rnd, int minValue, int maxValue)
    {
        if (minValue >= maxValue)
            throw new ArgumentOutOfRangeException("maxValue", "maxValue must be greater than minValue");
        if (minValue + 1 == maxValue)
            return Tuple.Create<int, int>(minValue, maxValue);

        int rnd1 = rnd.Next(minValue, maxValue);
        int rnd2 = rnd.Next(minValue, maxValue);
        while (rnd1 == …
Run Code Online (Sandbox Code Playgroud)

c# random thread-safety

5
推荐指数
2
解决办法
2066
查看次数

当要滚动的项目太多时,Windows窗体列表框会溢出

我正在构建一个基于后缀树的索引器应用程序,这使我能够非常快速地索引整个文档和搜索字符串,子字符串等.

我正在做的是在文本框中输入一个字符串,按下按钮,并运行查询后缀树的函数,并将字符串的所有出现位置添加到列表框中.所以列表框里面有很多整数.

通常,这很好.例如,搜索"向导"或"Gandalf",或"hobbit"(我将FOTR索引为测试:D)工作正常且花花公子.但是,我现在用字母e来试试.

问题是字母e的位置确实列在列表框中.全部88974个.然而,当我向下滚动通过拖动滚动条按钮,列表框似乎循环回到顶端当我在各地的项目60000个左右.由于我尝试滚动页面并且一切正常,因此问题更加严重.

我知道,通过88974(基于listbox.Items.Count)项目的滚动是有点极端,但在逻辑上,没有任何理由应该有这样的问题.

感谢您阅读这篇文章!

编辑:对所有回答的人,谢谢你回答.我最终使用listview实现了它,并且速度更快,可以很好地保存很多项目.谢谢!

.net c# listbox winforms

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

用于超链接可见性的ASP.NET声明性绑定不起作用

我在用户控件中有一个超链接,我想通过使用声明性属性来设置可见性,即

<asp:HyperLink ImageUrl="/images/icons/rss.png" Visible="<%# ShowRssIcon %>" ID="FeedHyperLink" runat="server"></asp:HyperLink> 
Run Code Online (Sandbox Code Playgroud)

但是,即使ShowRssIcon为false,它也始终可见。ShowRssIcon是在用户控件上设置的简单属性。即使将ShowRssIcon设置为始终在显示的超链接中返回假结果。

但是,设置Visible="false"Visible="true"手动按预期方式工作。同样,在on Page_Load事件后面的代码中设置属性也可以。

有任何想法吗?谢谢。

.net c# asp.net

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

标签 统计

c# ×4

.net ×2

asp.net ×1

f# ×1

image-processing ×1

listbox ×1

random ×1

thread-safety ×1

winforms ×1