概述
List<SendMessage> sendingMessages = null;
if(sendingMessages != null && sendingMessages.Count > 0){
// Debug.Log("current in sending msg: " + sendingMessages.Count);
for(int i=0; i<sendingMessages.Count; i++){
// Debug.Log("msg time: " + msg.time.ToString());
SendMessage msg = sendingMessages[i];
msg.time += Time.deltaTime;
}
}
因为刚做unity没多久,c#是现学现用,上次又遇到一个坑,
SendMessage msg = sendingMessages[i];
msg.time += Time.deltaTime;
这样代码写完以后我以为list里面对应的值被改变了,结果后来证明是没有变化的,查资料发现结构体是值类型的,我这样写改变的是一份拷贝,
解决方案有2个:
1, 最后再加上:
sendingMessages[i] = msg;
2,把容器里面结构体改称类
根据c#高级编程里面的说法,
结构体在c#里面是值类型,
SendMessage msg;不是一个引用,已经创建了一份内存,所以结构体可以new,也可以不new
都是用的这一份内存。
最后
以上就是老实楼房为你收集整理的C# 改变容器里面结构体的值的全部内容,希望文章能够帮你解决C# 改变容器里面结构体的值所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复