将数据传递到构造函数类

时间:2017-01-08 22:10:26

标签: c# class constructor

我创建了一个控制台应用程序,可以创建角色,修改角色,装备武器并显示用户输入角色数据。我的第一个问题是。如何捕获用户条目并将这些值传递给构造函数。我创建了一个字符类,并创建了我的构造函数变量。我还在我的角色课程中加入了getter和setter。要添加,我将如何为这个角色配备武器?

    static void CreateCharacter()
        {
        //Declare my variables
        string charName;
        int charBaseAttack;
        int charHealth;
        int charAge;
        int charSaiyanLevel;



        //Ask for user input
        Console.Write("Please enter the name of your character");
        charName = Console.ReadLine();

        Console.Write("Thanks for that, now enter a Base Attack level please:  ");
        charBaseAttack = Convert.ToInt32(Console.ReadLine());

        Console.Write("Thanks for that, now enter a Health level please:   ");
        charHealth = Convert.ToInt32(Console.ReadLine());

        Console.Write("Thanks for that, now how old is your character:   ");
        charAge = Convert.ToInt32(Console.ReadLine());

        Console.Write("Thanks for that, his or her Super Saiyan level please:   ");
        charSaiyanLevel = Convert.ToInt32(Console.ReadLine());



        //Instantiate my person
        Character userCharacter = new Character(charName, charBaseAttack, charHealth, charAge, charSaiyanLevel);

//我的角色类

    private string mName;
    private int mBaseAttack;
    private int mHealth;
    private int mAge;
    private int mSaiyanLevel;

    public Character(string _mName, int _mBaseAttack, int _mHealth, int _mAge, int _mSaiyanLevel)
    {
        //Initializing my member varaibles
        mName = _mName;
        mBaseAttack = _mBaseAttack;
        mHealth = _mHealth;
        mAge = _mAge;
        mSaiyanLevel = _mSaiyanLevel;
    }

    public Character()
    {
        Character userCharacter = new Character();
    }




    public string getName()
    {
        return mName;

    }
    public int getBaseAttack()
    {
        return mBaseAttack;

    }
    public int getHealth()
    {
        return mHealth;

    }
    public int getAge()
    {
        return mAge;

    }

    public int getSaiyanLevel()
    {
        return mSaiyanLevel;

    }

    public void setName(string _mName)
    {
        mName = _mName;


    }

    public void setBaseAttack(int _mBaseAttack)
    {
        mBaseAttack = _mBaseAttack;


    }

    public void setHealth(int _mHealth)
    {

        mHealth = _mHealth;

    }

    public void setAge(int _mAge)
    {

        mAge = _mAge;

    }

    public void setSaiyanLevel(int _SaiyanLevel)
    {

        mSaiyanLevel = _SaiyanLevel;

1 个答案:

答案 0 :(得分:0)

我假设您的代码在C#中,如果是这样,您可以更改您的播放器类以使用属性而不是getter / setter。从getter / setter更改为属性不是必需的

public class Character
{
    public string Name { get; set; }
    public int BaseAttack { get; set; }
    public int Health { get; set; }
    public int Age { get; set; }
    public int SaiyanLevel { get; set; }

    public Character(string _mName, int _mBaseAttack, int _mHealth, int _mAge, int _mSaiyanLevel)
    {
        //Initializing my member varaibles
        Name = _mName;
        BaseAttack = _mBaseAttack;
        Health = _mHealth;
        Age = _mAge;
        SaiyanLevel = _mSaiyanLevel;
    }

    // The default constructor is just initializing a local variable userCharacter 
    // to a new Character() that will be destroyed once it goes out of scope. 
    // If you need some default initialization
    // you could do: 
    public Character() : this(string.Empty, -1, -1, -1, -1) { }
    // I've initialized all int fields to -1 since it's a value
    // that none of these fields (hopefully) should ever have
    // Original default constructor
    //public Character()
    //{
    //   Character userCharacter = new Character();
    //   Once the code reaches the } below, userCharacter will
    //   be destroyed
    //}

    // Overrode the ToString method so that you can print
    // the characters to the console
    public override string ToString()
    {
        return string.Concat("Character Name: ", Name, " Base Attack: ", BaseAttack, " Health: ", Health, " Age: ", Age, " Saiyan Level: ", SaiyanLevel);
    }
}

要让您的程序类创建一个字符,您可以在代码中添加以下修改。我已尝试在代码段中尽可能多地解释,但如果您有问题,请随时发表评论

class Program
{
    // If you want to use CreateCharacter() to return a newly created character,
    // You could have CreateCharacter() return a Character
    public static Character CreateCharacter()
    {
        //Declare my variables
        string charName;
        int charBaseAttack;
        int charHealth;
        int charAge;
        int charSaiyanLevel;

        //Ask for user input
        Console.Write("Please enter the name of your character: ");
        charName = Console.ReadLine();

        Console.Write("Thanks for that, now enter a Base Attack level please:  ");
        charBaseAttack = Convert.ToInt32(Console.ReadLine());

        Console.Write("Thanks for that, now enter a Health level please: ");
        charHealth = Convert.ToInt32(Console.ReadLine());

        Console.Write("Thanks for that, now how old is your character: ");
        charAge = Convert.ToInt32(Console.ReadLine());

        Console.Write("Thanks for that, his or her Super Saiyan level please: ");
        charSaiyanLevel = Convert.ToInt32(Console.ReadLine());

        //Instantiate my person
        return new Character(charName, charBaseAttack, charHealth, charAge, charSaiyanLevel);
    }

    public static void Main(string[] Args)
    {
        // Two ways to instantiate a Character
        // 1. Change the return type of CreateCharacter() to return a Character object instead of void
        // 2. Copy & past the contents of CreateCharacter() into main
        //Declare my variables
        string charName;
        int charBaseAttack;
        int charHealth;
        int charAge;
        int charSaiyanLevel;

        //Ask for user input
        Console.Write("Please enter the name of your character: ");
        charName = Console.ReadLine();

        Console.Write("Thanks for that, now enter a Base Attack level please:  ");
        charBaseAttack = Convert.ToInt32(Console.ReadLine());

        Console.Write("Thanks for that, now enter a Health level please: ");
        charHealth = Convert.ToInt32(Console.ReadLine());

        Console.Write("Thanks for that, now how old is your character: ");
        charAge = Convert.ToInt32(Console.ReadLine());

        Console.Write("Thanks for that, his or her Super Saiyan level please: ");
        charSaiyanLevel = Convert.ToInt32(Console.ReadLine());

        //Instantiate my person
        Character userCharacter1 = new Character(charName, charBaseAttack, charHealth, charAge, charSaiyanLevel);
        System.Console.WriteLine();
        Character userCharacter2 = CreateCharacter();

        // Print both characters to the console
        System.Console.WriteLine();
        System.Console.WriteLine("First character stats:");
        System.Console.WriteLine(userCharacter1.ToString());
        System.Console.WriteLine();
        System.Console.WriteLine("Second character stats:");
        System.Console.WriteLine(userCharacter2.ToString());
    }
}