c# - 对于 .NET 和命令式 OO,是否有比 C# 更简洁(如在 F# 中)的替代方案?

标签 c# f#

我只是喜欢 F# 来完成适合函数式编程的任务。我将 C# 用于命令式 OO。

但是,每当切换到 C# 时,离开 F# 的非冗长语法和类型推断会变得越来越痛苦。

有谁知道是否有一些东西可以用于非冗长的命令式编程,因为语法和类型推断与命令式和函数式并没有真正的关系。

最佳答案

我不清楚您不喜欢 F# 的什么地方。虽然它支持函数式编程风格,但它也在许多方面改进了 .NET 中的命令式编程。我想不出有任何 C# 代码不能被功能相同且更短的 F# 代码替代(不安全 代码是我想到的唯一异常(exception))。

甚至是表示例如数据库记录的可变类型

class Employee {
    public Employee(string firstName, string lastName, int age) {
        this.FirstName = firstName;
        this.LastName = lastName;
        this.Age = age;
    }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
}

在 F# 中可以简化为以下内容:

type Employee =
  { mutable FirstName : string
    mutable LastName : string
    mutable Age : int }

这应该是 C# 的拿手好戏。

当您遇到 F# 缺少的功能时,通常会建议有更好的方法。这是停下来分析典型命令式方法缺点的好时机。

的确,F# 的最大优势可能在于它是一种多范式语言。您可以使用 OO 来构建您的项目和函数式编程 "in the small"组织您的模块——没有单一的风格必须占主导地位。它只会增加您的工具箱的大小。

如果有特定任务/概念在移植到 F# 时遇到问题,您应该提及它们以便其他人可以提供解决方案。

关于c# - 对于 .NET 和命令式 OO,是否有比 C# 更简洁(如在 F# 中)的替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9326721/

相关文章:

c# - 使用 C# Generics 进行界面设计

error-handling - 我想编写一个将 float 重写为连续分数的函数

function - 是否可以在 f# 中编写这样的递归分组函数

c# - 获取碰撞接触力

c# - 如何模拟 ASP.NET 5 中的 UserManager

C# 如何根据每个项目中的字符子集使用 lambda 表达式对字符串列表进行排序

c# - 在 C# 中使用 F# 作为 dll

F# 集合初始值设定项语法

具有委托(delegate)类型字段的 F# Marshall 结构

c# - iOS 上的 Ionic.Zip.Unity.dll ZlibException