冰凌汇编

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 31|回复: 0
收起左侧

[C#] C# 命名参数和可选参数

[复制链接]
Honeys 发表于 2022-7-30 23:01:09
为什么这两个要一起讲,因为这两个常常一起出现,可选参数常常用来替代以前的方法重载,可选参数一般置于普通参数的后面,但是当多个可选参数同时出现的时候,而你又想启用可选参数的优点,又不想每个可选参数都传递实参,这个时候编译器不知道你想给那个参数传递参数,就需要指定传递那个参数的名字,这个就是命名参数的由来,我是按照自己的理解来讲的,不是书面化的语言。
下面举个例子就明白了
[C#] 纯文本查看 复制代码
private RectangleFigure CreateFigure(Color color, PointF pointF = new PointF(), SizeF sizeF = new SizeF(),int priority = basicPriority)
 {
            color = Color.FromArgb(alpha, color.R, color.G, color.B);
            RectangleFigure figure;
            if (pointF.IsEmpty || sizeF.IsEmpty)
            {
                float w = Math.Min(canvas.ClientRectangleWorld.Width, backDie.Width) / 10;
                float h = Math.Min(canvas.ClientRectangleWorld.Height, backDie.Height) / 10;
                float x = (canvas.ClientRectangleWorld.Left + canvas.ClientRectangleWorld.Right - w) / 2;
                float y = (canvas.ClientRectangleWorld.Top + canvas.ClientRectangleWorld.Bottom - h) / 2;
                figure = new RectangleFigure(new RectangleF(x, y, w, h));
            }
            else
            {
                figure = new RectangleFigure(new RectangleF(pointF, sizeF));
            }
            figure.nLayer = priority;
 }

这里只想传递Priority 参数,其它的可选参数用默认值,那么就必须要用命名参数,告诉编译器我传递的是哪一个可选参数
[C#] 纯文本查看 复制代码
editingRectangle = CreateFigure(color,priority:priority);
冰凌汇编免责声明
以上内容均来自网友转发或原创,如存在侵权请发送到站方邮件9003554@qq.com处理。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|站点统计|Archiver|小黑屋|RSS|冰凌汇编 ( 滇ICP备2022002049号 滇公网安备 53032102000029号)|网站地图

GMT+8, 2022-9-25 06:33 , Processed in 0.124936 second(s), 7 queries , Redis On.

冰凌汇编 - 建立于2021年12月20日

Powered by Discuz! © 2001-2022 Comsenz Inc.

快速回复 返回顶部 返回列表