开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 652|回复: 3
收起左侧

[C#图文教程] 易转C# - 2 - 基本委托

[复制链接]
结帖率:95% (84/88)
发表于 2023-5-22 03:28:25 | 显示全部楼层 |阅读模式   美国
本帖最后由 陽陽陽 于 2023-5-22 03:30 编辑

搞了好几天,才弄明白

杂类:
1:下断点:

点一下vs2019最左边灰 /// 色的那一行
出现一个红点即可

F10 单步跳过
F11单步执行


简单理解就是F10不会跳到其它子程序,F11是一步一步走。


2:UTC Time:


DateTime.UtcNow
获取UTC时间,本地时间可能会有时差。



正文:
1:Action类型

可以有参数,不能带返回值。
例子:

            Action<string, int> testAct = tesActFu;
            testAct.Invoke("qqq", 22);


        public void tesActFu(string t1, int t2)
        {
            Console.WriteLine(t1);
            Console.WriteLine(t2);
        }




2:Func类型

可以有参数和返回值,

Func<返回值,参数1,参数2,参数3……> fun2 = new Func<返回值,参数1,参数2,参数3……>(程序名);

可以理解成指针,可以把它传递成参数:

        class WarpFactroy
        {
            public Box WarpPoroduct(Func<Product> getProduct)
            {
                Box box = new Box();
                Product product = getProduct.Invoke();
                box.Product = product;
                return box;
            }
        }


getProduct这个指针(委托)指向的是一个返回值类型为Product的子程序,然后可以根据需要传递不同的子程序

调用这个模板方法的时候可以这样:

Func<Product> fun2 = new Func<Product>(TheproductFactory.MakeToyCar);
Box box2 = ThewarpFactroy.WarpPoroduct(fun2);

先创建了一个指针(委托),然后把它传进那个子程序,在子程序内部调用



3:public delegate double Calc(double x, double y);

要写在namespace下
Func当参数(传递成参数)差不多(暂时还没能理解这个的具体用法和便捷之处):

            Calculator ACalculator = new Calculator();
            Calc calc1 = new Calc(ACalculator.Add);



    class Calculator
    {
        public double Add(double x, double y)
        {
            return x + y;
        }
        public double Sub(double x, double y)
        {
            return x - y;
        }
    }




4:好莱坞方法

可以调用,也可以不调用。
如果满足某些条件,就调用(例子:充 值时间为两年半,log记录一下)



5:委托滥用

可读性下降
灾难性:委托回调,异步调用,多线程放在一起
内存泄露



6:多播委托

大脑.exe 已停止运行。
明天再学。





大佬帮忙指点下错误
结帖率:95% (84/88)

签到天数: 3 天

 楼主| 发表于 2023-5-22 12:58:15 | 显示全部楼层   美国
参数前面加个this,就可以让参数从
XX(QQ,WW)
变成
QQ.XX(WW)


params可以理解成调试输出那个无线参数,只能用在最后一个
回复 支持 反对

使用道具 举报

结帖率:95% (84/88)

签到天数: 3 天

 楼主| 发表于 2023-5-22 12:54:38 | 显示全部楼层   美国
补充:
参数带ref可以赋一个新的变量
ref Student stu

stu = new Student() {name = "112"}

改变的时候HashCode也会变。


引用参数指向同一个地址。
用ref修饰

out是输出参数,引用参数要在外部明确赋值,out输出参数必须在内部明确赋值

分割文本:
文本.Split(‘分割字节’)

用文本分割:
https://bbs.125.la/forum.php?mod ... 14782830&extra=

具名参数:
命令XXX(参数2:“123”,参数1:“fefe")
方便查看代码。

可选参数
在声明的时候进行赋值。
回复 支持 反对

使用道具 举报

结帖率:90% (9/10)

签到天数: 23 天

发表于 2023-5-22 12:04:33 | 显示全部楼层   重庆市重庆市
public delegate double Calc(double x, double y);这个才是委托类型本尊,语言本身支持
action
func
都是用delegate 定义的模板类型,库级别上支持的,右键查看定义可以看到

评分

参与人数 1好评 +1 精币 +3 收起 理由
陽陽陽 + 1 + 3 感谢分享,很给力!~

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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