本文主要是介绍struct易错点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
namespace FXTest
{class Program{static void Main(string[] args){List<Ast> l1 = new List<Ast>();List<IAst> l2 = new List<IAst>();l1.Add(new Ast());l2.Add(new Ast());l1[0].id = 2;//报错}}interface IAst{}struct Ast:IAst{public int id;}
}
以上在修改Ast中的id错误的原因是因为Ast是struct值类型,当你在修改id的时候实际上修改的是它的副本;将Ast修改为引用类型的class即可。
并且l2添加的时候性能消耗更小,因为l1在添加的时候会引发拆箱操作(struct是值类型)。
l1.Add(new Ast());
l2.Add(new Ast());
这篇关于struct易错点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!