C# - 在一些计算后从另一个构造函数调用构造函数[重复]

Posted

技术标签:

【中文标题】C# - 在一些计算后从另一个构造函数调用构造函数[重复]【英文标题】:C# - Call a constructor from another constructor after some calculations [duplicate] 【发布时间】:2016-07-26 14:09:55 【问题描述】:

我有 2 个构造函数,接受不同类型的参数:

public someClass(String s) 

    // the string is parsed to an int array.
    int[] array = doSomething(s);

    this(array);


public someClass(int[] array) 
    doSomethingElse(array);

但是,在第一个构造函数中,我得到“方法名称是预期的”。有没有办法让构造函数在执行其他操作后调用另一个构造函数,还是仅仅是 C# 的限制?

【问题讨论】:

两个构造函数都属于同一个class,在其他构造函数中做同样的事情有什么不同? (只是好奇) 【参考方案1】:

你不能那样做。但是你可以写

public SomeClass(string s) : this(doSomething(s))

这很好,只要int[] doSomething(string)static

【讨论】:

【参考方案2】:

根据 Call one constructor from another

public class SomeClass

    public SomeClass(string s) : this(dosomething(s))
    

    

    public SomeClass(int[] something)
    
    


    private static int[] dosomething(string)
    
        return new int[]  ;
    

我会使用静态方法来实现你想要的

【讨论】:

【参考方案3】:

除非doSomething 是静态的。

class someClass

    public someClass(String s)
        : this(doSomething(s))
     

    public someClass(int[] array)
    
        doSomethingElse(array);
    

    static int[] doSomething(string s)
    
        //do something
    

【讨论】:

以上是关于C# - 在一些计算后从另一个构造函数调用构造函数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在java中从另一个调用一个构造函数[重复]

如何从另一个构造函数调用 C++ 类构造函数 [重复]

如何在 Java 中从另一个构造函数调用一个构造函数?

C ++:从另一个构造函数隐式调用构造函数

是否可以从另一个调用 oracle 对象类型构造函数?

C#基础 可选参数调用params无参静态构造函数