我正在学习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行只是为了我的变量... 你知道另一种方法吗?或者我如何压缩这种方法? 谢谢!
答案 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);
}
}