构造函数中的构造函数

时间:2013-08-23 18:22:23

标签: c# java constructor

有什么方法可以在C#中做到这一点?我不能在C#代码中使用this(int,int)。你能给我写一些类似于C#的代码,并会做同样的事情吗?谢谢! :)

public class JavaApplication2
{
    public static class SomeClass 
    {
        private int x;
        private int y;

        public SomeClass () { this(90,90); }
        public SomeClass(int x, int y) { this.x = x; this.y = y; }
        public void ShowMeValues ()
        {
            System.out.print(this.x);
            System.out.print(this.y);
        }
    }
    public static void main(String[] args) 
    {
        SomeClass myclass = new SomeClass ();
        myclass.ShowMeValues();
    }
}

2 个答案:

答案 0 :(得分:4)

是的,C#可以链接构造函数:

public SomeClass() :this(90,90) {}
public SomeClass(int x, int y) { this.x = x; this.y = y; }

MSDN在Using Constructors

中介绍了这一点

话虽如此,在C#中,课程也必须不是static

答案 1 :(得分:2)

如果要将其转换为C#,有几件事需要更改:

  1. 主要问题是您已将SomeClass声明为静态。它不会编译,因为static classes不能有实例成员。您需要删除static关键字。
  2. 要从另一个调用constructor,您需要在构造函数参数之后使用: this(...)(或: base(...)来调用父类的构造函数)。
  3. 对于.NET应用程序,您需要使用System.Console
  4. 而不是System.out

    这应该适合你:

    public class SomeClass 
    {
        private int x;
        private int y;
    
        public SomeClass () : this(90,90) { }
        public SomeClass(int x, int y) { this.x = x; this.y = y; }
        public void ShowMeValues ()
        {
            Console.WriteLine(this.x);
            Console.WriteLine(this.y);
        }
    }