结构体赋值拷贝的问题

YooK 2019-02-08 12:21:54
我知道C#里的结构体属于值类型,在直接赋值的时候会进行拷贝,有没有语法像引用传参那样,不引发拷贝呢?

比如:
void myaction(ref Size size)
{
}
myaction(ref currentSize);

我想实现这样的效果(有语法错误):
size= ref currentSize;

实际应用中我可能只想用局部变量来保存一个值,比方:
protected override void OnResize( EventArgs e)
{
base.OnResize(e);
var newSize = this.Size; // 拷贝一次
// 。。在这里比较两个大小
oldSize = newSize; // 又拷贝一次
}
...全文
292 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序员的键盘 2019-02-09
  • 打赏
  • 举报
回复
protected override void OnResize( EventArgs e)
{
base.OnResize(e);
//var newSize = this.Size;
// 。。在这里比较两个大小 直接使用this.Size来比较
oldSize = this.Size; // 比较完就覆盖不行吗
}
threenewbee 2019-02-08
  • 打赏
  • 举报
回复
如果你不修改结构体的值,可以用 匿名对象包装下 var newSize = new { Height = this.Size.Height, Width = this.Size.Width }; var size1 = newSize; //不会触发拷贝
圣殿骑士18 2019-02-08
  • 打赏
  • 举报
回复
你想不引发拷贝,就不要用结构,用对象就好了。你非得用结构实现非拷贝,你是对C#有意见?
张天星 2019-02-08
  • 打赏
  • 举报
回复
意义不大,你如果声明了两个值类型变量, 那么本身这两个变量,就应该有不同的用途,你的需求想象不到可以使用的场景。
当然,真要实现也不是没有,C#虽然不建议使用指针,但也不是不能用。只是,没啥意义
  • 打赏
  • 举报
回复
我想让1+1=3,是不是也显得特别厉害?

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧