public struct strColumnStyleSet
        {
            public strColumnStyleSet(int _iColumnSelect, string _strHeaderText, string _strName, object[] _objComboNumber)
            {
                iColumnSelect = _iColumnSelect;
                strHeaderText = _strHeaderText;
                strName = _strName;
                _objComboNumber = objComboNumber;
            }            public int iColumnSelect;
            public string strHeaderText;
            public string strName;
            public object[] objComboNumber;            public int _iColumnSelect
            {
                get
                {
                    return iColumnSelect;
                }
                set
                {
                    iColumnSelect = value;
                }
            }            public string _strHeaderText
            {
                get
                {
                    return strHeaderText;
                }
                set
                {
                    strHeaderText = value;
                }
            }            public string _strName
            {
                get
                {
                    return strName;
                }
                set
                {
                    strName = value;
                }
            }
        }
结构体里面没办法对public object[] objComboNumber;赋予初值。
但是如果我不赋予初值,又在构造函数public strColumnStyleSet(int _iColumnSelect, string _strHeaderText, string _strName, object[] _objComboNumber)中告诉我必须执行这个栏位,两难啊,请教!!!

解决方案 »

  1.   

    又在构造函数public strColumnStyleSet(int _iColumnSelect, string _strHeaderText, string _strName, object[] _objComboNumber)中告诉我必须指定这个栏位,两难啊,请教!!!
      

  2.   

    你的用法比较奇怪。如果objComboNumber 类型可变,开始定义成模板类吧
    另外这样写错了
    objComboNumber = _objComboNumber;
      

  3.   

    public strColumnStyleSet(int _iColumnSelect, string _strHeaderText, string _strName, 
    object[]  _objComboNumber = null)给他默认成null 不行么
      

  4.   

    参考用法    public struct strColumnStyleSet<T>
        {
            public strColumnStyleSet(int _iColumnSelect, string _strHeaderText, string _strName, T[] _objComboNumber)
            {
                iColumnSelect = _iColumnSelect;
                strHeaderText = _strHeaderText;
                strName = _strName;
                objComboNumber = _objComboNumber;
            }        public int iColumnSelect;
            public string strHeaderText;
            public string strName;
            public T[] objComboNumber;        public int _iColumnSelect
            {
                get
                {
                    return iColumnSelect;
                }
                set
                {
                    iColumnSelect = value;
                }
            }        public string _strHeaderText
            {
                get
                {
                    return strHeaderText;
                }
                set
                {
                    strHeaderText = value;
                }
            }        public string _strName
            {
                get
                {
                    return strName;
                }
                set
                {
                    strName = value;
                }
            }
        }
            // 调用
            private void btnResultSel_Click(object sender, EventArgs e)
            {
                int[] arr = new int[2];
                arr[0] = 1;
                arr[1] = 101;
                strColumnStyleSet<int> aa = new strColumnStyleSet<int>(1, "gogo", "comeon", arr);
            }
      

  5.   


    你可以采用变参方式:声明如下params可变参数,然后用for循环给object[]赋值
    public static void UseParams2(params object[] list) 
        {
            for (int i = 0 ; i < list.Length; i++)
            {
                Console.WriteLine(list[i]);
            }
            Console.WriteLine();
        }
      

  6.   

    你的结构成员又有string又有object[],显然已经违反了结构设计原则...除非用于与非托管程序的交互参数,否则你根本就不应该用结构...