You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中方法的readonly修饰符作用是什么?结构体ToString场景解析

C# struct中readonly修饰方法的作用解析

当你定义如下struct并实现ToString重写时:

struct Test
{
    public override string ToString()
        => "some text";
}

编译器会触发IDE0251提示,建议给方法添加readonly修饰符,修改后代码如下,提示消失:

struct Test
{
    public override readonly string ToString()
        => "some text";
}

这种场景下readonly修饰符的作用主要有两点:

  • 性能优化:值类型(struct)的实例方法默认会隐式复制实例副本供方法使用。添加readonly后,编译器确认方法不会修改实例状态,因此直接操作原始实例,避免不必要的内存复制,提升执行效率。
  • 状态保证与编译检查:readonly会让编译器强制校验方法内部是否修改了struct的任何字段。如果方法里尝试修改字段,编译器会直接抛出错误,相当于给方法加上了“只读契约”,明确该方法不会改变实例的状态,增强代码的可读性和可靠性。

对于ToString这类天然不会修改实例状态的方法,添加readonly是符合C#值类型最佳实践的,这也是IDE0251提示的核心原因。

内容的提问来源于stack exchange,提问作者Pawulon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 10:52:43