【问题标题】:Making a method return an object by value?使方法按值返回对象?
【发布时间】:2012-12-10 03:34:41
【问题描述】:

我有一本这样的字典:Dictionary<string, SomeClass> template

基本上,我想做的是获取template 中包含的对象的副本。但是,我似乎无法创建一个按值检索对象的方法。我知道 refout,但这些与我想要的完全相反。结构是完美的,但不幸的是,SomeClass 必须从另一个类和/或接口继承。

有什么方法可以做我想做的事吗?这看起来应该很简单。

【问题讨论】:

  • 您可以自己复制对象,并将复制的引用传回:stackoverflow.com/questions/139592/…
  • 同意上面的评论。 C# 通过 ref 返回对象类型。如果你想要一个副本来操作,你需要创建一个副本。
  • 所以基本上,我只需要手动调用new SomeClass() 并手动填充来自 SomeClass 的另一个实例的所有数据?
  • [忽略自动复制方法的细节] 以一种或另一种形式,是的。您可能会考虑为任何改变状态并且不允许属性上的任何设置器的方法返回 SomeClass 的新副本。然后你实际上有一个不可变的 SomeClass,但事实仍然是你仍然需要自己以一种或另一种形式复制 SomeClass。

标签: c# methods return-by-value


【解决方案1】:

你需要copy constructor

你也可以实现ICloneable 接口或者创建自己的接口

this 也会帮助你!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    相关资源
    最近更新 更多