首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以在构造函数中同时调用这个重载和基重载吗?

我可以在构造函数中同时调用这个重载和基重载吗?
EN

Stack Overflow用户
提问于 2016-03-21 15:54:02
回答 1查看 85关注 0票数 0

我能找到的最接近的线程是this one,但是情况不同--要调用的基本构造函数是默认的构造函数。这里,我需要指定要传递它的参数。

假设我们有以下场景:

代码语言:javascript
复制
    public class Base
    {
        public string Str;

        public Base(string s)
        {
            Str = s;
        }
    }

    public class A : Base
    {
        public string Str2;

        public A(string str2)
            : base(str2)
        {
            Str2 = str2;
        }

        public A(string str2, string str)
            : base(str)
        {
            Str2 = str2;
        }
    }

我希望避免在A的第二个构造函数重载中重复相同的逻辑(从技术上讲,我可以将所有的逻辑封装到一个函数中,减少复制粘贴/提高可维护性,因为最后,所有重载都将依赖于相同的代码。在没有其他解决方案的情况下也会这样做)。

我想我可以先调用A的第一个构造函数重载,然后调用基本构造重载。但看来我做不到。

这里的方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-21 16:02:56

正确的方法是

代码语言:javascript
复制
public class A : Base
{
    public string Str2;

    public A(string str2)
        : this(str2, str2)
    {
    }

    public A(string str2, string str)
        : base(str)
    {
        Str2 = str2;
    }
}

A的单参数构造函数调用A的2参数构造函数,该构造函数使用this(而不是base(将相同的字符串传递给两个参数。然后删除单个参数构造函数的主体,因为所有的工作都是在两个参数构造函数中完成的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36135777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档