c#中构造函数之外的方法

时间:2016-05-29 23:47:39

标签: c# class object methods constructor

我正在研究一些学习资料,并且遇到了一些我不理解的代码。

class Program
{
    static void Main(string[] args)
    {
        var warrior = new Samurai();
        warrior.Attack("the evildoers");
        Console.ReadLine();
    }

    class Sword
    {
        public void Hit(string target)
        {
            Console.WriteLine("Chopped {0} clean in half", target);
        }
    }

    class Samurai
    {
        readonly Sword sword;
        public Samurai()
        {
            this.sword = new Sword();
        }

        public void Attack(string target)
        {
            this.sword.Hit(target);
        }
    }
}

就我而言,当我实例化Samurai时,我运行方法public Samurai()。如果warrior.Attack方法在构造函数Attack之外,方法public Samurai()如何调用?

1 个答案:

答案 0 :(得分:2)

Samurai类的构造函数实际上是

public Samurai()
{
    this.sword = new Sword();
}

这意味着当您编写以下代码时:

var warrior = new Samurai();

您创建一个Samurai类的新实例,并执行Samurai类构造函数中的代码。即为此武士创建一个剑的实例(this.sword = new Sword())。

Sword类不包含构造函数,因此当Samurai构造函数创建Sword实例时,不会调用Sword类中的任何其他内容。

new Samurai();

是如何创建Samurai类的实例。

使用

var warrior = new Samurai();

您正在创建一个Samurai类的实例,并且还声明一个名为" warrior"的变量,它将是您对这个新创建的实例的引用。

所以每当你想打电话给#34;攻击"这个新创建的实例的方法,您可以使用您的代码:

warrior.Attack("the evildoers");