gpt4 book ai didi

c# - 将实例的克隆分配给基本接口(interface)

转载 作者:行者123 更新时间:2023-11-30 14:40:42 26 4
gpt4 key购买 nike

假设:

public interface IBase
{
// Stuff
}

public class Derived : IBase
{
// Stuff
}

做的时候

Derived instance_ = new CDrv(); 
Ibase ibase = instance_; // Line 1

这是隐式转换还是赋值?

是否可以生成 instance_ 的克隆并赋值/转换为 ibase 可能通过覆盖转换或赋值运算符或其他一些方法?

或者换句话说,有什么方法可以按值传递 instance_ 而不是将其结构化?我不希望它成为一个结构,因为我有许多返回 Derived 的函数,并且上述转换/赋值很少发生。

最佳答案

没有将克隆对象的隐式转换。

您需要创建一种机制来“克隆”对象(可能实现 ICloneable ,尽管该接口(interface)不太理想),可以通过方法或新的构造函数:

IBase ibase = new Derived(instance_); // Using "copy constructor" you create

或者:

IBase ibase = instance_.Clone(); // ie: implement ICloneable, or similar mechanism

关于c# - 将实例的克隆分配给基本接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5032005/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com