小编fah*_*ash的帖子

在C#中处理对象销毁的最佳方法是什么?

我有一个类库项目,它有一个在对象构造期间创建文件的类.完成对象后,必须删除该文件.我已经实现了IDisposable并在Dispose()中编写了删除代码.问题是,我仍然看到该文件.我记得在某处读过Dispose不能保证被调用.实现这一目标的最佳方法是什么?

c# garbage-collection idisposable

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

F#这个表达式应该有'unit'类型,但是'bool'类型

我有以下代码

if somecondition then
  myobj.Property1 = match myobj.Property1 with
                       | null -> SomePropertyType ()
                       | p -> p
Run Code Online (Sandbox Code Playgroud)

我想要做的是查看myobj.Property1是否为null,如果不是,则单独留下它,否则创建SomePropertyType类型的新对象并分配它.

问题是,我得到了

This expression should have type 'unit', but has type 'bool'
Run Code Online (Sandbox Code Playgroud)

我应该怎么做如果我不得不把那些myobj.Property1 ....的多个声明放在那下面if

f# unit-type

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

在F#中重载后增量运算符是不可能的

我正在为C#开发人员编写一个库.该库是用F#编写的.C#开发人员希望++在其中一个对象上使用operator.我怎样才能做到这一点 ?

我在网上查了一下,发现++后增量算子在F#中是不可能的.

f#

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

如何检查字符串是否仅在F#中包含字母

我有一个只应包含字母的字符串。要检查我是否编写了以下代码

let isCorrectString(str:string) = 
 let isInRange x = (x > 64 && x < 91 ) || (x > 96 && x < 123) || x = 32
 not (str.Any(fun ch -> not (isInRange (ch :?> int)) ))
Run Code Online (Sandbox Code Playgroud)

我显然在这里使用LINQ的`Any'扩展方法。有没有更好的方法来编写上述代码?

f#

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

Rx如何真正在Web上工作(客户端)

我已经阅读了Rx CodePlex页面的介绍部分.我看过CascadiaJS视频.我发现了如何使用RxJS库.我有一个问题是如何帮助我使用现有的Ajax应用程序,我需要在服务器端和客户端更改以充分利用RxJS.

场景 我有一个使用ASP.NET Web API编写的REST服务.该服务当前有一个方法,它采用一个坐标数组并返回另一个坐标数组.因此调用非常简单,就像这样.

 $.ajax({
    url: "http://www.myservice.com/service1/",
    type: "POST",
    data: JSON.stringify(params),
    contentType: "application/json;charset=utf-8",
    success: handle_success,
    error: handle_failure,
    OPTIONS: null,
});
Run Code Online (Sandbox Code Playgroud)

现在,上面的调用只是调用REST服务,并对结果如何产生采取适当的操作.

有了Rx,我听到了"推"而不是拉的咒语.我们如何在上面的示例中使用"Push"?我是否要将我的REST服务更改为一个Listening TCP Socket,我的网页将保持连接(或进行Keep-Alive连接),新值将被"推送".或者这只是一个如上所述的服务调用,但成功/错误只是通过Observable"引导",一旦调用完成,该Observable的工作就完成了?

javascript reactive-programming rxjs

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

LINQ中的条件UNION(或者是比UNION更好的方法)?

我有以下对象模型

public class CityData
{
    public string CityName { get; set; }
    public int IncidentsReported { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我有一个Web服务方法(我无法改变代码),它为我公司办公室所在的所有城市提供数据.

var data = GetCitiesData();
Run Code Online (Sandbox Code Playgroud)

上述方法仅返回事件> 0的城市.但我想要所有城市,无论事件计数如何.我尝试使用LINQ Union方法解决我的问题.

var data = GetCitiesData()
                        .Union(
                    new[]
                    {
                        // Add all cities with 0 incidents
                        new CityData() {  CityName = "Kansas City", IncidentsReported = 0},
                        new CityData() {  CityName = "St Louis", IncidentsReported = 0},
                        new CityData() {  CityName = "New York", IncidentsReported = 0},
                    },
                     new CityComparer()
                );
Run Code Online (Sandbox Code Playgroud)

这是我对CityComparer的实现

public …
Run Code Online (Sandbox Code Playgroud)

c# linq

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

删除了我本地软件包缓存中的所有Nuget软件包,现在我根本无法使用VS

我删除了里面的所有文件和文件夹C:\Users\myself\.nuget\packages,现在我的所有.NET Core项目都抱怨System或者Void找不到任何原始类型。尝试了以下

  • Nuget.exe-还原c:\ path \ to \ myslnfile.sln -PackageDirectory C:\ Users \ myself \ .nuget \ packages
  • 建立解决方案
  • 创建一个新项目(新项目抱怨同样的事情)

现在我该怎么做?

.net-core visual-studio-2017

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

如何在F#中使用Observable.Zip

这是我在C#中的代码

Observable.Zip(ob1, ob2, (a, b) => a + b);
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用Pipe-Forwarding运算符将其转换为F#

ob1 |> Observable.Zip(ob2, Func<_,_,_> (fun a b -> a + b))
Run Code Online (Sandbox Code Playgroud)

它不会编译,因为它无法获得我尝试使用的重载.

任何线索?

以下工作正常,我只是好奇我是否可以让管道转发操作员在这里工作.从技术上讲,它应该将左侧的ob1作为第一个参数,并将两个提供的参数作为第二个和第三个参数?

 Observable.Zip (ob1,ob2 ,Func<_,_,_>(fun a b -> a + b))
Run Code Online (Sandbox Code Playgroud)

f#

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

F#中无参数的lambda表达式

我正在寻找一种在F#中定义无参数lambda表达式的方法,就像下面的C#示例一样.

var task = () => {
                     int x = 3;
                     DoSomething(x);
                 }
Run Code Online (Sandbox Code Playgroud)

我尝试了以下内容

let task = fun _ -> 
              let x = 3
              doSomething x
Run Code Online (Sandbox Code Playgroud)

它编译但它给task : ('a -> unit)了我我真正想要的是task : (unit -> unit)

MSDN文档不谈论这个.我在这里错过了什么?

f# c#-to-f# unit-type

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

如何通过选择要添加的项来生成数组

我有以下数组

let evens = [| 
    for key in numbersDictionary.Keys -> 
        match numbersDictionary.[key] % 2
        | 0 -> Some(numbersDictionary.[key])
        | _ -> None |]
Run Code Online (Sandbox Code Playgroud)

我确实有None奇数的选项类型数组.如何调整上述声明所以evens成为int[]代替int option [],没有NoneS'

f#

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