C# 6.0 自动属性初始化语法详解:实现默认值赋值
C# 6.0 引入了自动属性初始化功能,允许开发者在定义 get/set 访问器的同时直接指定默认值。这种方式无需编写额外构造函数即可为属性赋初值,显著提升了代码的可读性与简洁性。
背景与数据库模型
在处理数据实体时,确保每个对象拥有合理的初始状态是预防运行错误的常见需求。假设我们有一个名为 ToolLocation 的数据表,其结构定义如下:
CREATE TABLE [dbo].[ToolLocation]
(
[ToolLocation_nbr] SMALLINT IDENTITY(1,1) NOT NULL PRIMARY KEY,
[LocationName] NVARCHAR(20) NOT NULL,
[Description] NVARCHAR(50) NULL,
[IsActive] BIT NOT NULL DEFAULT(1)
)
使用 C# 6.0 语法定义实体类
在之前的 C# 版本中,若希望属性有默认值,通常需要编写无参构造函数或依赖字段初始化。而在 C# 6.0 中,可以直接在属性声明语句末尾使用 = 赋值操作符。这种对比体现了语法的演进:
以下是具体的实体类代码实现。注意观察每个属性如何在其声明行直接进行初始化:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Insus.NET.Models
{
public class ToolLocation
{
// 默认值为 1
public short ToolLocation_nbr { get; set; } = 1;
// 字符串默认为空
public string LocationName { get; set; } = string.Empty;
public string Description { get; set; } = string.Empty;
// 布尔值默认为 true
public bool IsActive { get; set; } = true;
}
}
验证实体对象的实例化结果
为了直观看到默认值生效的效果,可以创建一个简单的实体工厂方法,通过不同方式实例化对象并输出查看:
using Insus.NET.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Insus.NET.Entities
{
public class ToolLocationEntity
{
public IEnumerable<ToolLocation> ToolLocations()
{
return new List<ToolLocation>() {
// 对象 1:仅使用默认值初始化,未手动指定任何属性
new ToolLocation(),
// 对象 2:部分属性手动赋值
new ToolLocation { ToolLocation_nbr = 2, LocationName = "A2", Description = "A2 CNC",IsActive = true},
// 对象 3:包含非默认值的例子
new ToolLocation { ToolLocation_nbr = 3, LocationName = "C4", Description = "C4 CNC",IsActive = false}
};
}
}
}
在 ASP.NET MVC 中的应用
在控制器层获取这些对象集合后,将其传递给视图进行渲染。以下是控制器处理数据的示意位置:
随后在 ASP.NET MVC 视图中遍历并显示这些数据。界面将呈现出三个对象的状态,特别是第一个对象,它完美展示了所有属性均采用了预定义的默认值:
最终的运行效果如下图所示,各个字段的初始内容完全符合预期:
以上就是关于 C# 6.0 自动属性设置默认值的详细内容,更多关于 C# 高级特性的资料请关注本站其它相关文章!免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









