小编Tho*_*mas的帖子

在C#中,有没有办法模拟传递指针(不使用unsafe关键字)

如果不使用'Unsafe'关键字,可以完成以下操作:

将字段作为参数传递给函数.该函数可以定期更改该字段的值.

所以,如果我有:

int MyField;
Run Code Online (Sandbox Code Playgroud)

和:

MyFunction(ref MyField)
Run Code Online (Sandbox Code Playgroud)

该函数可以存储指针MyField并根据需要更改其值.

在C++中,我们只是传递一个指向该值的指针,然后根据需要进行更改,但我试图找出是否可以在C#中完成.我猜它可以通过反思来完成.

c# pointers unsafe

0
推荐指数
2
解决办法
1177
查看次数

ElasticSearch/Nest搜索包含同义词,复数和拼写错误

我想做一个实现以下项目的搜索.

现在我通过正则表达式实现了所有这一切,它远远没有涵盖所有内容,我想知道我可以使用ElasticSearch做多少:

  • 同义词

    我的理解是,这是在创建索引时实现的.

    indexSettings.Analysis.TokenFilters.Add("synonym",new SynonymTokenFilter {Synonyms = new [] {"tire => tire","aluminum => aluminum"},IgnoreCase = true,Tokenizer ="whitespace"});

    但是我还需要包含复数吗?要么,

  • 奇异的单词(鞋子和鞋子应该是完全相同的)

    这是否意味着我需要将"鞋子"放在同义词列表中?还是有另一种方式?

  • 应允许小的拼写错误,替换和遗漏

    所以'汽车','汽车'或'汽车'将匹配.我不知道这是否可能.

  • 忽略所有停止的话

    现在我通过正则表达式删除所有'the','this','my'等

我所有的搜索词都是简单的英文单词和数字; 别的什么都不允许.

elasticsearch nest

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

使用C#/ LinQ删除列表中的重复字符串但忽略大小写

随着清单:

"A","Bb","C","a","d","bb"

如何在忽略套管的情况下使用LinQ删除重复项?

这里的输出应该是:

"C","d"

c# linq

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

如何在F#中使用可变变量编写+ =操作

简单的例子,在C#中:

i += 1;
Run Code Online (Sandbox Code Playgroud)

我如何用F#中的可变变量编写此代码,而不是:

i <- i + 1
Run Code Online (Sandbox Code Playgroud)

有较短的语法吗?

f#

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

在 F# 中使用 tryremove 和 byref 的正确语法是什么

我有以下几点:

let callbacks = ConcurrentDictionary<string, Object>()
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用 TryRemove:

if callbacks.TryRemove(id, myObject : byref<Object>) then ...
Run Code Online (Sandbox Code Playgroud)

不编译;我也试过:

let mutable cc = Object
if callbacks.TryRemove(id, ref cc) then ...
Run Code Online (Sandbox Code Playgroud)

但同样的事情......还有:

let mutable cc = Object
if callbacks.TryRemove(id, &cc) then ...
Run Code Online (Sandbox Code Playgroud)

使用它的正确语法是什么?

f#

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

为什么 Map 在读取时比 Dictionary 慢,在 F# 中(来自我附加的基准)

我偶然发现了这个页面:http : //jackfoxy.com/simple-lookups-in-fsharp/

它对用于插入和检索的各种集合进行基准测试。

如果我们看一下这张表(网页上的第二张):

String Key by Number of Elements in Lookup Structure, 10,000 random lookups
        Map     IntMap  Dict    HashTbl     HshMltMap
10^2    1.3     n/a     0.4     0.3     1.5
10^3    1.7     n/a     0.4     0.4     1.5
10^4    3.0     n/a     0.7     0.7     1.8
10^5    5.3     n/a     1.5     1.2     2.4
10^6    8.4     n/a     1.6     1.5     6.3
Run Code Online (Sandbox Code Playgroud)

我们可以看到,当 Map 变大时,使用 Map 进行查找比使用 Dictionary 慢 5 倍。

由于 Map 是只读的,因此可以以最优化的方式组织数据,因为它不处理插入、调整大小等。为什么它这么慢?

performance f# containers dictionary

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

F# 中用于获取第一个有效结果的计算表达式

我怎样才能以干净的方式实现这样的目标?

让我们想象一下这个简单的代码:

let a () = checkSomeStuff ();     None
let b () = do Something ();       Some "thing"
let c () = checkSomethingElse (); None


"getOne" {
    do! a()
    do! b()
    do! c()
}
Run Code Online (Sandbox Code Playgroud)

它会返回第一个“Some”。

我可以通过使用 Result 来实现这种确切的行为,其中我通过错误返回值并使用 Ok 继续,但这不可读/不好:

let a () = checkSomeStuff ();     Ok ()
let b () = do Something ();       Error "thing"
let c () = checkSomethingElse (); Ok ()


result {
    do! a()
    do! b()
    do! c()
}
Run Code Online (Sandbox Code Playgroud)

这是可行的,但我希望在不误用 Result 类型的情况下实现这一目标。用现有的表达方式可以做到吗?

f#

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

标签 统计

f# ×4

c# ×2

containers ×1

dictionary ×1

elasticsearch ×1

linq ×1

nest ×1

performance ×1

pointers ×1

unsafe ×1