• Ironpython及其他托管语言中值类型最好使用构造函数赋值,否则无法赋值的问题


    使用Ironpython,怎么也没办法给结构体赋值。

    [Serializable]
        public struct Matrix3x3
        {
            public double Xx;
            //
            public double Xy;
            //
            public double Xz;
            //
            public double Yx;
            //
            public double Yy;
            //
            public double Yz;
            //
            public double Zx;
            //
            public double Zy;
            //
            public double Zz;
    
            public override string ToString();
        }
    

      

      element1=Matrix3x3()
                element1.Xx = X.X
                element1.Xy = X.Y
                element1.Xz = X.Z
                element1.Yx = Y.X
                element1.Yy = Y.Y
                element1.Yz = Y.Z
                element1.Zx = Z.X
                element1.Zy = Z.Y
                element1.Zz = Z.Z
                theUI.NXMessageBox.Show("Error", NXMessageBox.DialogType.Warning,X.X.ToString())  
                theUI.NXMessageBox.Show("Error", NXMessageBox.DialogType.Warning,element1.Xx.ToString())  
    
    theUI.NXMessageBox.Show("Error", NXMessageBox.DialogType.Warning,str(type(X.X)))   
      theUI.NXMessageBox.Show("Error", NXMessageBox.DialogType.Warning,str(type(element1.Xx)))  
    

      

    X.X.ToString()为实数,但是element1.Xx.ToString()始终为0
    两者类型都是<float>

    害得我搞了一上午和一下午,人生能有多少个白天啊!!!
    最终终于在stackoverflow上走到了类似的帖子:
    http://stackoverflow.com/questions/2664381/how-to-handle-value-types-when-embedding-ironpython-in-c

    改成下面这样就好了:

                element1=Matrix3x3(Xx = X.X,Xy = X.Y,Xz = X.Z,Yx = Y.X,Yy = Y.Y,Yz = Y.Z,Zx = Z.X,Zy = Z.Y,Zz = Z.Z)
    

      

    原来,值类型的属性必须要在构造函数里赋值,否则拿到的就是副本!!!!

    太没天理了啊!



    image

    欢迎访问我的专业知识博客!
    博主:白途思(begtostudy)
    微信/QQ:370566617
    Email:begtostudy#gmail.com
    欢迎访问我的其他博客:我的编程知识博客 我的学术知识博客

  • 相关阅读:
    安卓模拟器黑屏
    关系型数据库的1NF、2NF、3NF
    flowable数据库详解
    spring事务传播行为详解
    springboot整合activity
    各种java面试题目
    springCloud中增加gateway(超详细)
    mysql实现主从复制
    flowable整合springboot
    window安装linux系统
  • 原文地址:https://www.cnblogs.com/begtostudy/p/2644225.html
Copyright © 2020-2023  润新知