C#教程 - 继承和定义类型?

时间:2016-04-27 13:22:57

标签: inheritance c#-4.0 derived-types

我正在通过本教程dotnetacademy exercise 5.1工作 我已经尝试了许多不同的方法来解决这个问题,当我尝试验证时,它不会起作用。我试过这个:

public class Atom
{
    public Atom()
    {

    }

    public Atom(int protons, int electrons)
    {
        Protons = protons;

        Electrons = electrons;
    }

    public int Protons { get; set; }

    public int Electrons { get; set; }
}


public class Program
{
    public static void Main(string[] args)
    {
    var Hydrogen = new Atom(1,2);
    }
}

我得到一个错误说"你必须定义一个名为Hydrogen的类型。",但我认为这就是var Hydrogen所做的。

我也试过了:

public class Atom
{

    public Atom(int protons, int electrons)
    {
        Protons = protons;

        Electrons = electrons;
    }

    public int Protons { get; set; }

    public int Electrons { get; set; }

}

public class Hydrogen : Atom
{
    public Hydrogen() : base("Atom") {}
}

public class Program
{
    public static void Main()
    {
    }
}

这个人不会编译。公共氢气():基地("原子")"它说"没有参数,因为它对应于形式参数'质子' ' Atom.Atom(int,int)'"

我甚至问了一位C#开发人员,他无法弄清楚为什么我的尝试无法正常工作。有人可以帮忙吗?我刚刚掌握了这些概念,现在我被卡住了。

谢谢!

编辑: 只是为了给出该链接的完整上下文,他们使用以下代码启动嵌入式验证器:

public class Atom
{
    public int Protons { get; set; }

    public int Electrons { get; set; }
}

public class Program
{
    public static void Main()
    {

    }
}

并且说明如下:

  
      
  1. 在基本类型Atom上创建一个构造函数,它接受一个名为质子和整数电子的整数。构造函数应该   将值设置为关联的属性Protons和Electrons。
  2.   
  3. 实现从Atom继承的派生类型氢,并为基质提供质子和电子的正确参数   构造
  4.   

我没有求助于在论坛上发帖寻求帮助,因为我一直在研究我的方式并试图解决这个问题,但我想知道他们是否只是严格要求"如何&# 34;他们希望它能够解决,无论你是否可以通过许多不同的方式解决它。我只是想看看他们希望我们如何解决它!洛尔

再次感谢!

4 个答案:

答案 0 :(得分:1)

  

没有参数给出对应于'Atom.Atom(int,int)的形式参数'protons'

这是基类的构造函数:

public Atom(int protons, int electrons)

但是在派生类中你试图使用它:

base("Atom")

也就是说,您提供string值而不是两个int值。改为提供int值:

public class Hydrogen : Atom
{
    public Hydrogen() : base(1, 1) {}
}

答案 1 :(得分:0)

我明白了!谢谢大卫的帮助!这是最终的代码:

public class Atom
{

    public Atom(int protons, int electrons)
    {
        Protons = protons;
        Electrons = electrons;
    }

    public int Protons { get; set; }

    public int Electrons { get; set; }
}


public class Hydrogen : Atom
{
    public Hydrogen() : base(1, 1) {}
}

public class Program
{
    public static void Main()
    {
    var Nucleus = new Hydrogen();
    }
}

答案 2 :(得分:0)

此代码可以正常工作:

public class Atom
{
    public int Protons { get; set; }

    public int Electrons { get; set; }

    public Atom(int protons, int electrons)
    {
        Protons = protons;
        Electrons = electrons;
    }
}

public class Hydrogen : Atom
{
    public Hydrogen() : base(1, 1)
    {
    }
}

public class Program
{
    public static void Main()
    {
    }
}

答案 3 :(得分:0)

我犯了一个非常简单的错误,property =变量运行,而variables = property导致编译错误

public Atom(int protons, int electrons)
{

protons = Protons;
electrons = Electrons;
    
}

VERSUS

public Atom(int protons, int electrons)
{
Protons = protons;
Electrons = electrons;
    
}