C# 使用带有隐式运算符的结构,但保留其余的结构值

C# 使用带有隐式运算符的结构,但保留其余的结构值,c#,struct,C#,Struct,就我的正常编码习惯而言,我正在冒险进入新的领域;我正在创建结构来处理一些应用程序的基本数据类型 我有一个包含单个轴信息的JoyAxis结构,然后是一个包含多个JoyAxis信息的XYJoy结构,我希望能够在XYJoy中定义JoyAxis的值,而不必重建整个轴 例如,如果JoyAxis具有电流、最小值和最大值;假设X是MyJoy(即XYJoy)中的JoyAxis,我希望能够通过MyJoy.X=23设置当前值,但仍然保持MyJoy.X.min和其他结构信息 我突然想到,我可以覆盖一个字段的get/s

就我的正常编码习惯而言,我正在冒险进入新的领域;我正在创建结构来处理一些应用程序的基本数据类型

我有一个包含单个轴信息的JoyAxis结构,然后是一个包含多个JoyAxis信息的XYJoy结构,我希望能够在XYJoy中定义JoyAxis的值,而不必重建整个轴

例如,如果JoyAxis具有电流、最小值和最大值;假设X是MyJoy(即XYJoy)中的JoyAxis,我希望能够通过MyJoy.X=23设置当前值,但仍然保持MyJoy.X.min和其他结构信息

我突然想到,我可以覆盖一个字段的get/set,该字段再次指向我的新领域,所以我不确定术语是否正确,但由于对这一领域如此陌生,我想知道是否有更常见的方法来实现这一点

    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的背景,不是吗?了解课程,一个全新的世界将在你眼前打开: