C# 使用带有隐式运算符的结构,但保留其余的结构值
就我的正常编码习惯而言,我正在冒险进入新的领域;我正在创建结构来处理一些应用程序的基本数据类型 我有一个包含单个轴信息的JoyAxis结构,然后是一个包含多个JoyAxis信息的XYJoy结构,我希望能够在XYJoy中定义JoyAxis的值,而不必重建整个轴 例如,如果JoyAxis具有电流、最小值和最大值;假设X是MyJoy(即XYJoy)中的JoyAxis,我希望能够通过MyJoy.X=23设置当前值,但仍然保持MyJoy.X.min和其他结构信息 我突然想到,我可以覆盖一个字段的get/set,该字段再次指向我的新领域,所以我不确定术语是否正确,但由于对这一领域如此陌生,我想知道是否有更常见的方法来实现这一点C# 使用带有隐式运算符的结构,但保留其余的结构值,c#,struct,C#,Struct,就我的正常编码习惯而言,我正在冒险进入新的领域;我正在创建结构来处理一些应用程序的基本数据类型 我有一个包含单个轴信息的JoyAxis结构,然后是一个包含多个JoyAxis信息的XYJoy结构,我希望能够在XYJoy中定义JoyAxis的值,而不必重建整个轴 例如,如果JoyAxis具有电流、最小值和最大值;假设X是MyJoy(即XYJoy)中的JoyAxis,我希望能够通过MyJoy.X=23设置当前值,但仍然保持MyJoy.X.min和其他结构信息 我突然想到,我可以覆盖一个字段的get/s
public struct JoyAxis
{
int Value { get; set; }
int max_Value { get; set; }
int min_Value { get; set; }
int center_Value
{
get
{
return (int)Math.Ceiling((double)(this.max_Value - this.min_Value) / 2d);
}
}
public JoyAxis(int value)
{
this.Value = value;
}
public JoyAxis(int value, int min_value, int max_value)
{
this.Value = value;
this.min_Value = min_value;
this.max_Value = max_value;
}
static public implicit operator JoyAxis(int value)
{
return new JoyAxis(value);
}
}
public struct XYJoy
{
JoyAxis X { get; set; }
JoyAxis Y { get; set; }
}
“新领域”取代了类,或者这是进入结构/类的第一步?因为我在这里强烈建议类。可变结构通常是个坏主意,请参见示例1。第一个问题是可变结构,2。为什么需要int的隐式转换?为什么你不能生成一个新的结构实例并设置它呢?我以一种有限的方式使用了类,即使这对我来说是新的,我过去只是将大量的单个对象传递给我的方法,而不是像我认为更常见的那样将对象放在类和结构中,所以这对我来说都是很新的,但结构更是如此。是的,你应该使用类。你来自VB6的背景,不是吗?了解课程,一个全新的世界将在你眼前打开: