C#与另一个类中的类的变量交互

时间:2017-01-23 09:27:28

标签: c# object

我正在学习C#,并且我问了最好的方法来与这个类中的类的变量进行交互。我想到了这个:

public class Character
    {
        private int x, y;

        public Character(int posX, int posY)
        {
            x = posX;
            y = posY;
        }

        public int X
        {
            get
            { 
                return x;
            }
            set
            { 
                x = value;
            }
        }

        public int Y
        {
            get
            { 
                return y;
            }
            set
            { 
                y = value;
            }
        }
    }`

    class MainClass
    {
        public static void Main (string[] args)
        {
            Character hero = new Character (42, 36);
            Console.WriteLine (hero.X);
            Console.WriteLine (hero.Y);
            hero.X = 5;
            Console.WriteLine (hero.X);
        }
    }

我不知道这种方法是好还是优化但是有效。但是,如果我想为10个变量做这个,我的类将做最小的(如果我想在get / set中添加测试,则更多)100行只是为了我的变量... 你知道另一种方法吗?或者我如何压缩这种方法? 谢谢!

3 个答案:

答案 0 :(得分:4)

您可以使用auto-implemented properties

public class Character
{
   public Character(int x, int y)
   {
      X = x;
      Y = y;
   }

   public int X { get; set; }
   public int Y { get; set; }
}

同样在现实生活中,如果你需要更新其他类的许多变量,请考虑重新设计你的代码。您可能已将数据和逻辑分成两个不同的类。考虑将两个类合并为一个具有处理该数据的数据和逻辑。

注意:对于名为Record Types的下一个C#版本,有一个很大的更新,它允许您在类名后列出所有类属性:

class Character(int X, int Y);

这是数据传输对象的良好语法糖。

答案 1 :(得分:0)

这种变量称为属性,当我希望变量可以从其他对象读取和编辑时使用它,因此即使您增加属性数量或添加,它也是您问题的最佳解决方案。检查获取/设置。 继续!

答案 2 :(得分:0)

除自动属性外,您还可以使用Object initializer。在这种情况下,您不需要显式声明构造函数。使用该功能,您可以节省更多代码行。请检查以下代码以查看更改:

public class Character
{       
   public int X { get; set; }
   public int Y { get; set; }
}


class MainClass
{
    public static void Main (string[] args)
    {
        var hero = new Character {X = 42, Y = 36};
        Console.WriteLine(hero.X);
        Console.WriteLine(hero.Y);
        hero.X = 5;
        Console.WriteLine (hero.X);
    }
}