关于C#:C# – 在一些计算之后从另一个构造函数调用构造函数

C# - Call a constructor from another constructor after some calculations

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
6
7
8
9
10
11
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的一个限制?


除非doSomething是静态的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class someClass
{
    public someClass(String s)
        : this(doSomething(s))
    { }

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

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

根据从另一个构造函数调用一个构造函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class SomeClass
{
    public SomeClass(string s) : this(dosomething(s))
    {

    }

    public SomeClass(int[] something)
    {
    }


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

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


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

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

只要int[] doSomething(string)static就可以了。