社区
C#
帖子详情
求教如何获得一个实例的拷贝副本?
happyjun2000
2005-02-23 08:26:48
现有一个
htmltable tb ;
//init tb
--
//init tb
然后想得到tb的一个copy副本,
用htmltable tbcopy = tb ;好象是不可以的,但是tb没有提供copyto或者clone函数,只有htmltablecell提供了copyto(),
我应该怎样快速高效的得到tb的copy?
谢谢!
...全文
240
16
打赏
收藏
求教如何获得一个实例的拷贝副本?
现有一个 htmltable tb ; //init tb -- //init tb 然后想得到tb的一个copy副本, 用htmltable tbcopy = tb ;好象是不可以的,但是tb没有提供copyto或者clone函数,只有htmltablecell提供了copyto(), 我应该怎样快速高效的得到tb的copy? 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
happyjun2000
2005-02-23
打赏
举报
回复
xixigongzhu(夕夕宝贝)
您说的应该也是可行的,
但是tr = tbSource.Rows[i] ;
到底是做了什么呀,郁闷:<
xixigongzhu
2005-02-23
打赏
举报
回复
方法Clone如下:
private object Clone(object source )
{
MethodInfo mi = typeof(object).GetMethod("MemberwiseClone",BindingFlags.NonPublic|BindingFlags.Instance);
return mi.Invoke(tbSource,null);
}
然后再这样试试:
tr = (HtmlTableRow) Clone(tbSource.Rows[i]);
tb.Rows.Add ( tr ) ;
xixigongzhu
2005-02-23
打赏
举报
回复
tr = new HtmlTableRow( ) ;
tr = tbSource.Rows[i] ;
tb.Rows.Add ( tr ) ;
你把另一个表的行对象直接添加到了这个表,可能这样不行
happyjun2000
2005-02-23
打赏
举报
回复
为什么下面的循环在执行了一次以后,就报错误:tbSource.Rows[i]下标越界,好象执行tr = tbSource.Rows[i] ;后就把那个Rows丢失了,但
是我也拷贝过了啊,怎么还是会丢失,怎么回事?
大家指教!
//
for ( int i = 0 ; i < 3; i++ )
{
tb = new HtmlTable ( ) ; //table begin
tb.Width = "100%" ;
//body
tr = new HtmlTableRow ( ) ; //row begin
td = new HtmlTableCell ( ) ; //cell begin
td.Width = "100%" ;
HtmlTable tbBodyCopy = CloneHtmlTable ( tbBody ) ; //tbBody是个已经存在的表
HtmlTable tbBodyTemp = InitHtmlTable ( tbBodyCopy ) ;
td.Controls.Add ( tbBodyTemp ) ;
tr.Controls.Add ( td ) ; //cell end
tb.Controls.Add ( tr ) ; //row end
divContent.Controls.Add ( tb ) ; //table end
}
//
private HtmlTable InitHtmlTable ( HtmlTable tbSource )
{
HtmlTable tb ;
HtmlTableRow tr ;
tb = new HtmlTable( ) ;
for ( int i = 0; i < tbSource.rows.count; i++ )
{
tr = new HtmlTableRow( ) ;
tr = tbSource.Rows[i] ;
tb.Rows.Add ( tr ) ;
}
return tb ;
}
//
private HtmlTable CloneHtmlTable ( HtmlTable tbSource )
{
MethodInfo mi =
typeof(object).GetMethod("MemberwiseClone",BindingFlags.NonPublic|BindingFlags.Instance);
HtmlTable tbcopy = (HtmlTable)mi.Invoke(tbSource,null);
return tbcopy ;
}
happyjun2000
2005-02-23
打赏
举报
回复
MemberwiseClone创建当前 Object 的浅表副本。
如果要得到一个深层副本怎么做?
cdo
2005-02-23
打赏
举报
回复
学习
happyjun2000
2005-02-23
打赏
举报
回复
to xixigongzhu(夕夕宝贝)
方法是可行的,谢谢!
还有什么其他方法吗?
欢迎指教!
web_gus
2005-02-23
打赏
举报
回复
学习
bflovesnow
2005-02-23
打赏
举报
回复
mark
xixigongzhu
2005-02-23
打赏
举报
回复
MethodInfo mi = typeof(object).GetMethod("MemberwiseClone",BindingFlags.NonPublic|BindingFlags.Instance);
htmltable tbcopy = (htmltable)mi.Invoke(tb,null);
xixigongzhu
2005-02-23
打赏
举报
回复
有个比较笨的办法
yizhixiaozhu
2005-02-23
打赏
举报
回复
up
sutalon
2005-02-23
打赏
举报
回复
没有做过,帮你 顶
up
linuxyf
2005-02-23
打赏
举报
回复
建议一种方法,你先把tb序列化,然后定义另一个htmltable对象,再反序列化把结果赋给它。
xixigongzhu
2005-02-23
打赏
举报
回复
tbSource.Rows[i]只是简单的读取而已
是tb.Rows.Add ( tr )这个起作用
happyjun2000
2005-02-23
打赏
举报
回复
感谢夕夕宝贝(公主)
明天结贴!
【Java深入】深
拷贝
与浅
拷贝
详解
本文详细介绍了
拷贝
机制中的引用
拷贝
、对象
拷贝
(包括浅
拷贝
和深
拷贝
),并通过多个
实例
展示了不同
拷贝
方式的特点及应用场景。通过阅读本文,读者可以了解
拷贝
过程中的对象行为变化。
浅析NumPy
副本
和视图以及Python中append() 与深
拷贝
、浅
拷贝
本文详细介绍了NumPy中的
副本
和视图概念,包括如何创建
副本
和视图,以及它们之间的区别。通过
实例
展示了简单赋值、视图或浅
拷贝
及
副本
或深
拷贝
的不同行为。
python
拷贝
列表的
副本
博客介绍了在Python中
拷贝
列表且修改
副本
不改变原列表的三种方法,分别是使用列表的切片操作、copy方法,以及在循环中进行
拷贝
,并表示会给出具体例子。
B18_NumPy
副本
和视图(视图或浅
拷贝
、
副本
或深
拷贝
、深浅
拷贝
)
本文详细介绍了NumPy中的
副本
和视图概念,包括它们的定义、如何创建及使用,以及它们之间的区别。
副本
是对数据的完整
拷贝
,修改
副本
不会影响原始数据;而视图则是对原始数据的引用,修改视图会直接影响原始数据。文章还提供了多个
实例
,展示了如何使用ndarray的view()和copy()函数来创建视图和
副本
。
unity C#深
拷贝
、浅
拷贝
、直接赋值区别与经典
实例
本文详细介绍了C#中浅
拷贝
和深
拷贝
的概念,通过
实例
对比浅
拷贝
如何仅复制值类型字段并共享引用类型,而深
拷贝
则复制所有字段包括引用类型的内容并创建新
实例
。同时提到了浅
拷贝
与直接赋值在处理引用类型的微妙差异。
C#
111,129
社区成员
642,540
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章