Me=object(C#:This=object)

Me=object(C#:This=object),c#,vb.net,parsing,constructor,overloading,C#,Vb.net,Parsing,Constructor,Overloading,简言之,我只想知道,我是否(以及如何)可以做像Me=object (在C中:This=object) 给定的对象将属于同一类,只是另一个实例。 我在谷歌和论坛搜索中找不到任何关于它的信息 背景: 这不是一个真正的问题,但困扰着我。 基本上我想去掉下面的init()函数(类似于VB.net的伪代码) 现在来谈谈我真正的“问题”。有不同的方法来实现这一点: 1) 我可以调用字符串构造函数中的.parse函数。 -->字符串构造函数将创建对象foo1 -->然后它将调用解析器,解析器将从字符串中提取信

简言之,我只想知道,我是否(以及如何)可以做像
Me=object

(在C中:
This=object

给定的对象将属于同一类,只是另一个实例。 我在谷歌和论坛搜索中找不到任何关于它的信息

背景: 这不是一个真正的问题,但困扰着我。 基本上我想去掉下面的init()函数(类似于VB.net的伪代码)

现在来谈谈我真正的“问题”。有不同的方法来实现这一点:

1) 我可以调用字符串构造函数中的.parse函数。 -->字符串构造函数将创建对象foo1 -->然后它将调用解析器,解析器将从字符串中提取信息,然后创建一个新的对象foo2(通过使用提取的信息调用正确的构造函数) -->foo2正是我想要的foo1,因此调用
Me=foo2
可以解决我的问题。但我不知道如何做到这一点,也不知道如何将foo2“返回”给构造函数的调用者

相反,我必须调用
init(foo2.information)
,然后设置foo1.information=foo2.information 简而言之,我的构造函数先创建foo1,然后通过Parse()创建foo2,然后通过init()将foo2复制到foo1

2) 我可以在.parse函数中调用字符串构造函数。 -->字符串构造函数首先必须从字符串中提取所有信息 -->然后它就可以用这些信息调用我的默认构造函数。。。等等,不。。。它不能。这是因为在构造函数中,我只能在第一行代码中调用其他构造函数。因此,我必须创建一个名为init()的助手子类,它取代了我常用的构造函数。 助手子使这成为一个很好的和有效的解决方案,但我不喜欢有一个额外的子只是为单一的情况

所以这绝对没什么大不了的,但这让我很困扰。 还有别的办法解决这个问题吗

谢谢提前分配, 贾尼斯

PS:拥有Parse(字符串)和new(字符串)是为了提高类的可用性

this = something
仅允许在
struct
类型中使用,不允许在类中使用

因此,答案是否定的,这是不可能的(因为您指的是对象)。

语法:

this = something
仅允许在
struct
类型中使用,不允许在类中使用


因此,答案是否定的,这是不可能的(因为您指的是对象)。

问题的答案是:您不能这样做

下面是根本问题的解决方案

使您的
Parse
私有化,并返回基本构造函数(或
init()
)可以接受的内容。然后在一行调用
Parse
,您可以调用另一个构造函数。我将在下面使用C#,但想法是一样的:

public class MyClass {
    private MyClass(ResultsOfParse data) {
        ...
    }
    public MyClass(string data) : this(Parse(data)) {
        // nothing to do, the other constructor did all the work
    }
    private static ResultsOfParse Parse(string data) {
        // parse the string
        // put all necessary data into ResultsOfParse and return it
    }

    private class ResultsOfParse {
        // contains everything the constructor of MyClass needs
    }
}

这个问题的答案是:你做不到

下面是根本问题的解决方案

使您的
Parse
私有化,并返回基本构造函数(或
init()
)可以接受的内容。然后在一行调用
Parse
,您可以调用另一个构造函数。我将在下面使用C#,但想法是一样的:

public class MyClass {
    private MyClass(ResultsOfParse data) {
        ...
    }
    public MyClass(string data) : this(Parse(data)) {
        // nothing to do, the other constructor did all the work
    }
    private static ResultsOfParse Parse(string data) {
        // parse the string
        // put all necessary data into ResultsOfParse and return it
    }

    private class ResultsOfParse {
        // contains everything the constructor of MyClass needs
    }
}

谢谢你的回答,但是这比我自己的解决方案创造了更多的“开销”(编辑:(不意味着发送它,只需要新行……),虽然你的解决方案也是有趣的,是另一种选择,当有这样的问题:)谢谢你的答案,但是这比我自己的解决方案创造了更多的“开销”2编辑:(并不是要发送它,只是想要新行…)虽然你的解决方案也是有趣的,是另一个选择时,考虑到这样的问题:谢谢你的信息,很好知道。我接受了这个答案,虽然我也认为没有名字的解决方案是有趣的。谢谢你的信息,很高兴知道。我接受了这个答案,虽然我也认为没有名字的解决方案很有趣。