我在一家技术公司工作,该公司做的原型比产品发货还多.我刚刚被问到C#和F#有什么不同,为什么微软要创建F#,哪些场景会比C#更好.

我已经使用这门语言有一段时间了,我喜欢它,所以我可以很容易地继续讲述F#的伟大特性,但是我缺乏C#的经验来说明为什么我们应该使用一种而不是另一种.

使用C对F或F对C有什么好处?

推荐答案

函数式编程相对于命令式语言的一般好处:

在F#这样的函数式编程语言中,您可以更容易、更接近它们的定义和更简洁地表述许多问题,并且您的代码不容易出错(不变性、更强大的类型系统、直观的递归算法).你可以编码你的意思,而不是电脑想让你说什么;-)You will find many discussions like this when you google it or even search for it at SO.

特殊F#-优势:

看看this document

C#的优势在于,它通常比函数式编程语言更准确地描述"命令性"应用程序(用户界面、命令性算法),它使用的.NET框架是命令性设计的,而且使用范围更广.

此外,您可以将F#和C#结合在一个解决方案中,这样您就可以将这两种语言的优点结合起来,并在需要的地方使用它们.

.net相关问答推荐

如何处理以用户为中心的CSP现时值?(uc-lock.bundle.js)

DI通过对象的接口而不是实际类型来解析服务

PowerShell中窗体定时器和系统定时器的统一处理

与 Datagrid 的 SelectedItem 链接时的 WPF RadioButton 绑定问题

无法通过构建目标访问 dotnet 的环境变量

如何知道变量是否只是指向另一个对象的pointer或者它是否可以独立存在

如何中止任务,如中止线程(Thread.Abort 方法)?

.net 服务总线建议?

如何判断对象是否是某种类型的数组?

如何在 C# 中序列化异常对象?

如何禁用 Alt + F4 关闭表单?

何时使用抽象类?

是否有 Linq 方法可以将单个项目添加到 IEnumerable

如何在 C# 中以编程方式安装 Windows 服务?

Dispatcher.CurrentDispatcher 与 Application.Current.Dispatcher

您可以使用 Xamarin 开发 Linux 应用程序吗?

使用 C# 将时间跨度值转换为格式hh:mm Am/Pm

System.IO.IOException:使用 System.IO.Path.GetTempFileName() 时文件存在 - 解决方案?

您可以将 Microsoft Entity Framework 与 Oracle 一起使用吗?

枚举和匹配属性的 C# 命名约定