惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
U
Unit 42
Google DeepMind News
Google DeepMind News
博客园 - 司徒正美
Y
Y Combinator Blog
F
Fortinet All Blogs
云风的 BLOG
云风的 BLOG
T
Tailwind CSS Blog
G
Google Developers Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
罗磊的独立博客
D
DataBreaches.Net
T
The Blog of Author Tim Ferriss
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
MyScale Blog
MyScale Blog
N
Netflix TechBlog - Medium
Microsoft Security Blog
Microsoft Security Blog
GbyAI
GbyAI
P
Proofpoint News Feed
Jina AI
Jina AI
B
Blog RSS Feed
腾讯CDC
阮一峰的网络日志
阮一峰的网络日志
D
Docker

博客园 - Eric zhou

Github Project-AI Agentic Framework (.NET) 我不是给 AI 装了一堆插件,我是在搭一套工作能力系统 我不是在用 AI 助手,我在把自己的能力沉淀成组织资产 .NET 10 新特性概览与相关文章索引 .NET 10 & C# 14 New Features 新增功能介绍-ASP.NET Core 基于Microsoft.Extensions.AI 和 Microsoft.Extensions.VectorData构建向量搜索 Windows 安装 OpenClaw 踩坑全记录:Node、Git、CMake、VS Build Tools 一次解决 .NET 10 & C# 14 New Features 新增功能介绍-.NET CLI工具改进 .NET 10 & C# 14 New Features 新增功能介绍-再看Top Level Program .NET 10 & C# 14 New Features 新增功能介绍-带修饰符的简单 lambda 参数 .NET 10 & C# 14 New Features 新增功能介绍-Null 条件分配(Null-conditional assignment) .NET 10 & C# 14 New Features 新增功能介绍-扩展成员Extension Members 基于.NET和C#构建光伏IoT物模型方案 总结归纳.NET 10 中 Minimal APIs 主要应用场景 .NET 10 New feature 新增功能介绍-Minimal APIs增强 .NET 10 New feature 新增功能介绍-WebSocket功能增强 Google A2UI本地部署记录 .NET10 New feature 新增功能介绍-类库新增功能 关于Agentic AI的一些总结和思考 .NET10 New feature 新增功能介绍-JIT编译器改进
.NET 10 & C# 14 New Features 新增功能介绍-field关键字
Eric zhou · 2026-02-23 · via 博客园 - Eric zhou

上篇文章给大家分享了
.NET 10 & C# 14 New Features 新增功能介绍-扩展成员Extension Members

今天给大家继续分享field关键字

C# 14 中,引入了新的上下文关键字 field,用于在自动属性(auto-property)的访问器中直接访问编译器生成的隐藏 backing field(后备字段)。

这解决了一个长期存在的问题:

自动属性如果需要在 set 中做校验或增强逻辑,就必须手动声明一个私有字段。

主要价值:field 允许你在属性的 get / set 访问器内部,直接访问自动生成的隐藏字段,而不需要手写私有变量。

一、代码示例

① 传统写法:

需要手动声明 _age。

private int _age;

public int Age
{
    get => _age;
    set
    {
        if (value < 0)
            throw new ArgumentException();
        _age = value;
    }
}

② 使用filed关键字

public int Age
{
    get => field;
    set
    {
        if (value < 0)
            throw new ArgumentException();
        field = value;
    }
}

这个语法糖:

  • 不需要声明 _age
  • 语义更清晰
  • 减少样板代码

二、典型应用场景

  带校验的自动属性

public string Name
{
    get => field;
    set => field = string.IsNullOrWhiteSpace(value)
        ? throw new ArgumentException("Name cannot be empty")
        : value;
}

 修改值后做额外处理

public int Score
{
    get => field;
    set
    {
        field = value;
        OnScoreChanged();
    }
}

 限制最大最小值

public int Percentage
{
    get => field;
    set => field = Math.Clamp(value, 0, 100);
}

三、底层技术原理

编译器仍然生成类似:

private int <Age>k__BackingField;

field 本质是对这个隐藏字段的语法糖访问。

IL 不变,只有语法层增强。

field 关键字本质是:

让自动属性可以“半升级”为带逻辑的属性,而不丢失简洁性。

以上分享给大家。

周国庆

20260223