C# 中的 Immutable2025年4月7日 | 阅读7分钟 在 C# 中,如果一个对象在创建后无法被修改,那么它就是不可变的。不可变性对于许多用例都很有价值,包括数据传输对象。 不可变的事物在其整个生命周期内都具有固定的状态,因为它们是不可更改的。这种可预测性通过使代码的行为更易于理解,从而简化了调试和维护。 创建不可变对象为了在 C# 中创建不可变对象,请遵循最佳实践,例如:
示例让我们以一个例子来说明 C# 中Immutable 的使用。 示例编译并运行输出 The temperature in Celsius is: 28 The temperature in Fahrenheit is: 82.4 The new temperature in Celsius is: 32 The new temperature in Fahrenheit is: 89.6 The new temperature in Celsius is: 35 The new temperature in Fahrenheit is: 95 The original temperature in Celsius is: 28 The original temperature in Fahrenheit is: 82.4 说明在此示例中,Temperature 类以摄氏度作为基本测量单位,用于表示温度值。Temperature 实例是不可变的;它们是使用摄氏度值创建的。该类包括 InCelsius() 和 InFahrenheit() 方法,用于创建具有摄氏度或华氏度温度的新实例。当在 Demo 类中创建实例时,它们的温度会以摄氏度和华氏度显示。之后,温度值的变化会创建新的实例,同时保留原始实例,从而证明了不可变性。在涉及温度处理的情况下,此模式可确保线程安全和可预测性。 1. 使用值类型在 C# 中,值类型默认是不可变的。值类型包括结构体、枚举以及 int、float 和 DateTime 等基本类型。当我们为值类型变量分配新值时,会创建一个新实例。 示例让我们以一个例子来说明 C# 中使用值类型Immutable 的用途。 示例编译并运行输出 The Initial Value is: 256 The New value is: 743 说明在此示例中,ImmutableStruct 是一个定义为结构体的值类型。它包含一个单一的只读字段 Value,该字段确保一旦在构造函数中为其赋值,就无法再次更改。它确保了不可变性,因为结构体是值类型,并且在传递实例时会对其进行复制。ImmutableStruct 的一个实例在 Main 方法中创建,初始值为 256。由于 Value 是只读字段,尝试在实例化后更改其 Value 会导致编译错误。 如果需要不同的值,则会使用所需的值创建新的 ImmutableStruct 实例,而不是修改当前实例。这证明了 C# 值类型的不可变性。 2. 不可变对象这些对象的状态无法更改。通常,使用只读字段或仅具有 getter 和没有 setter 的属性来构造不可变对象。 示例让我们以一个例子来说明 C# 中使用不可变对象Immutable 的用途。 示例编译并运行输出 The Value of an Immutable Object is: 437 说明
3. 函数式编程构造函数式编程鼓励不可变性,并避免可变状态。在 C# 中可以使用函数式编程思想编写不可变的代码,例如高阶函数、lambda 表达式和纯函数。 示例让我们以一个例子来说明 C# 中使用函数式编程构造Immutable 的用途。 示例编译并运行输出 The Doubled Numbers are: 20 46 86 68 30 说明
Immutable 的优点C# 中的Immutable具有以下几个优点:
Immutable 的缺点C# 中的Immutable具有以下几个缺点:
下一个主题null |
我们请求您订阅我们的新闻通讯以获取最新更新。