Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C语言中的引用#_C#_Reference - Fatal编程技术网

C# C语言中的引用#

C# C语言中的引用#,c#,reference,C#,Reference,在C#中,我希望传递对尚未实例化的对象的引用。像这样: MyClass obj = new MyClass(obj); 在C++中,我可以这样做:< /P> class MyClass { public: MyClass( MyClass **obj ) : the_obj( obj ) { } MyClass** the_obj; }; MyClass *obj = new MyClass(&obj); 我如何

在C#中,我希望传递对尚未实例化的对象的引用。像这样:

    MyClass obj = new MyClass(obj);
在C++中,我可以这样做:< /P>
    class MyClass {
    public:
        MyClass( MyClass **obj ) : the_obj( obj ) { }
        MyClass** the_obj;
    };
    MyClass *obj = new MyClass(&obj);
我如何在C#中做到这一点


注意。

只需创建一个可变类,该类引用您作为成员感兴趣的类型:

public class Wrapper<T>
{
    public T Value { get; set; }
}
公共类包装器
{
公共T值{get;set;}
}

Wrapper=newwrapper();

您现在有一个对实例的引用和对
MyClass

实例的引用。您想要一个引用自身的对象吗?为什么要这样做?顺便说一下,C#有指针。在我看来,See指针应该作为最后的手段使用。如果你解释一下,而不是你决定使用什么机制,这将非常有帮助。当你遇到这样的语言问题时,这通常表明它不是正确的方法(至少对于你正在使用的语言而言)。对于你想要达到的目标,可能有另一种解决方案。如果你能提供你的最终目标是什么的细节,我们也许可以提供一些帮助alternatives@PeterSchneider它被命名为
包装器
。它是对
MyClass
@PeterSchneider的未初始化引用的引用是的,它是,并且该对象本身就是一个引用,因为它是一个引用类型。这在道德上相当于C/C++中的指针。包装器的自动属性
Value
下面的字段是空的,不是吗?@PeterSchneider起初是这样的。可以为其分配一个实例。它为null的事实使它成为指向未初始化指针的指针,这是专门要求的。
Wrapper<MyClass> wrapper = new Wrapper<MyClass>();