奇思妙想 · 2024年 6月 18日 0

C# out和ref修饰的变量有什么区别?

54 次浏览

out和ref均代表传递变量引用,即被调用方可以修改,前者要求一定修改,后者不强制要求修改。既然是引用,C#编译器生成的IL代码对于out和ref类型基本无差别,因为都是变量引用(或指针),只是编译器会额外卡关:out类型变量一定会被调用时修改,ref类型变量一定先初始化再传入。

  • 如果理解C/ObjC/C++传入变量的地址,很好理解out和ref的含义。
  • 函数参数只有out和ref的差异,无法通过编译。