C#之out和ref的用法区别&&NX获取面法相及中心点

懒得打字了,摘一段总结,但是我也是这么用和想的。

ref和out的区别在C# 中,既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员更改参数的值,并保持该更改。若要通过引用传递参数, 可使用ref或out关键字。ref和out这两个关键字都能够提供相似的功效,其作用也很像C中的指针变量。它们的区别是:

1、使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方法中对其完成初始化。

2、使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字。以满足匹配。

3、out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。

还是自己写一下吧。

1、out在写方法时只出不进,但在方法体内必须赋值,调用方法时参数不需要赋值。

2、ref有出有进,在方法体内可以不赋值,直接使用,但是调用方法时必须先赋值(主要是给内存腾出一块空间出来)

上代码:NX获取面的法相及中心点

 /// <summary>
        /// 获取面的法相和中心点位置
        /// </summary>
        /// <param name="face">任意面</param>
        /// <param name="point3">面中心点</param>
        /// <returns></returns>
        private NXOpen.Vector3d GetFaceNorm(NXOpen.Face face, out NXOpen.Point3d point3)
        {
            double[] faceUV = new double[4];
            theUfSession.Modl.AskFaceUvMinmax(face.Tag, faceUV);
            double[] parm = new double[2] { (faceUV[0] + faceUV[1]) / 2, (faceUV[2] + faceUV[3]) / 2 };

            double[] point = new double[3];
            double[] u1 = new double[3];
            double[] v1 = new double[3];
            double[] u2 = new double[3];
            double[] v2 = new double[3];
            double[] unit_norm = new double[3];
            double[] radii = new double[2];
            theUfSession.Modl.AskFaceProps(face.Tag, parm, point, u1, v1, u2, v2, unit_norm, radii);

            point3.X = point[0];
            point3.Y = point[1];
            point3.Z = point[2];
            return new Vector3d(unit_norm[0], unit_norm[1], unit_norm[2]);
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值