我正在学习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个变量这样做,我的类将为我的变量做至少100行(如果我想在get/set中添加测试)100行……你知道还有什么方法可以继续吗?或者我如何压缩这个方法?谢谢!
发布于 2017-01-23 17:38:05
这种类型的变量被称为属性,当我希望变量在其他对象中是可读和可编辑的时,它被使用,所以它是解决您的问题的最佳解决方案,即使您将增加属性的数量或在get/set中添加检查。去吧!
发布于 2017-01-23 17:29:08
您可以使用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; }
}同样,在现实生活中,如果你需要更新很多其他类的变量,考虑重新设计你的代码。您可能已经将数据和逻辑分成了两个不同的类。考虑将两个类合并为一个类,其中包含数据和处理该数据的逻辑。
注意: C#的下一个版本Record Types有一个很大的更新,它允许你只在类名后面列出所有的类属性:
class Character(int X, int Y);对于数据传输对象来说,这是很好的语法糖。
发布于 2017-01-23 18:04:09
除了auto-properties之外,还可以使用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);
}
}https://stackoverflow.com/questions/41802904
复制相似问题