MSDN 官方的解释
readonly 关键字是可以在字段上使用的修饰符。当字段声明包括 readonly 修饰符时,该声明引入的字段赋值只能作为声明的一部分出现,或者出现在同一类的构造函数中.
我的理解是:
public class tt
{
private readonly int i=5;
}
或者
public class tt
{
private readonly int i;
public tt(int j)
{
i=j;
}
}
跟const不一样的地方时:可以在构造函数里面赋值,另外可以支持如DateTime等const不支持的类型。
但是,但是,但是,赋值这件事情对一些集合类型来说相当于new,不等于add、remove,如
public class tt
{
private readonly List<int> items;
public tt()
{
items=new List<int>();
}
public Add(int i)
{
items.Add(i);//这是允许的
}
public void ReNew()
{
items=new List<int>();//这是不允许的
}
}
这样做的好处在于可以避免程序在其他地方重新初始化变量(我以为)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)