委托案例1

namespace ClsLib //公共层
{
   public delegate void WriteTimeToDevDelegate();//定义类
}

namespace ClsLib //公共层
{
    public class Class1
    {
        public ClsLib.WriteTimeToDevDelegate WriteTime; //委托
        public void DoSth() //公共方法
        {
            Console.WriteLine("============================================");
            Console.WriteLine("============================================");
            Console.WriteLine("============================================");
            Console.WriteLine("============================================");//其它的一样就是这部份不同,但是这的的代码也不确定,这个方法中的代码由将来的调用者来决定//由于这里的代码是不确定的,可变的。所以需要这里用一个变量。将来调用者传递这个变理什么代码就执行什么代码。
            WriteTime(); //委托变量
            Console.WriteLine("============================================");
            Console.WriteLine("============================================");
            Console.WriteLine("============================================");
            Console.WriteLine("============================================");
        }
    }
}

T1 调用

namespace T1  //T1项目
{
    class Program
    {
        static void Main(string[] args)
        {
            ClsLib.Class1 c1 = new ClsLib.Class1(); //实类化公共类
            c1.WriteTime = M1; //把M1方法给委托
            c1.DoSth();
            Console.ReadKey();
        }
        static void M1()
        {
            Console.WriteLine("当前时间:{0}",System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"));
        }
    }
}

T2项目调用

namespace T2 //T2项目
{
    class Program
    {
        static void Main(string[] args)
        {
            ClsLib.Class1 c1 = new ClsLib.Class1();
            c1.WriteTime = M1;
            c1.DoSth();
            Console.ReadKey();
        }
        static void M1()
        {
            File.WriteAllText(@"time.txt", System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"));
            Console.WriteLine("时间已写入到文件中");
        }
    }
}
时间: 2024-08-06 20:03:55

委托案例1的相关文章

c#委托案例和理解

以下采用员工玩游戏,老板扣工资的案例: class Boss { private int money = 20; public void RSalary(int wage) { Console.WriteLine("老板发现扣工资{0}¥,剩余{1}", money,wage-money); } } class Employment { //为了减少老板的工作,同时低耦合,使用委托代替老板工作 public delegate void PGHandler(int pay);//定义参数

委托案例1 可变的抽离出来

namespace ChangeStringLib //公共类 { public class Class1 { //public void ChangeString(string[] str) //{ // for (int i = 0; i < str.Length; i++) // { // str[i] = str[i].ToUpper(); // } //} //公共的方法 public void ChangeString(string[] str, ChgStrDelegate chg

01-多线程及异步委托

一.多线程: 1.概念: 线程:是Windows任务调度的最小单位.线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针.程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数. 多线程:是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务(代码),也就是说允许单个程序创建多个并行执行的线程来完成各自的任务. 2.为什么要用多线程: ①让计算机"同时"做多件事情,节约时间. ②多线程可以让一个程序“同时”处理多个事情. ③后台运行程序,

C#知识体系(二)用案例来理解委托与事件

上一篇博客讲到了LinQ和lambda的常用方法 还有很多我们未知但c#设计团队已经为我们封装好的类和方法.随着我们不断的熟悉C#语言,渐渐的就会接触到其他的知识点,委托.事件.反射.线程.同步,异步.IO.套接字...这些东西我们平常用到的不多,都是些概念性的东西,也许是因为不熟悉而可以回避了使用这些东西,不可否认的是 就算不用这些我们依然能想到问题的解决办法.但是几乎所有语言都会有这些概念,因为在某些场景它们能发挥不可思议的能力. 其实我到现在还是没有掌握委托和事件,在工作或者设计中也尽量回

类加载器深入理解和双亲委托模型的案例分析

类加载器深入理解和双亲委托模型的案例分析 我们知道类必须通过类加载器加载后,我们程序才可以使用.接下来我们就对类加载器进行分析,Java虚拟机的类加载器是如何加载类的.首先我们可以从ClassLoader的源码分析入手. ClassLoader 的源码分析 ClassLoader 的javadoc文档 javadoc文档是最权威的官方讲解,可以对ClassLoader有一个比较全面且正确的一个认知.下面是javadoc内容. A class loader is an object that is

什么是委托以及案例

using System; using System.Collections.Generic; using System.Text; namespace Delegate { //定义委托,它定义了可以代表的方法的类型 public delegate void GreetingDelegate(string name); class Program { private static void EnglishGreeting(string name) { Console.WriteLine("Mo

C#委托的使用及案例

C#委托 1.委托就是把方法当做方法的参数来传递, 做自己不想做的事,是存有对某个方法的引用的一种引用类型变量.引用可在运行时被改变. 所有的委托都派生自System.Delegate类 委托的声明 Public delegate 返回类型 委托名称(要传递的参数) (1) 不带参数的委托 (2) 带参数的委托 3.委托的多播(Multicasting of a Delegate) 委托对象可使用 "+" 运算符进行合并.一个合并委托调用它所合并的两个委托.只有相同类型的委托可被合并.

扩展方法、泛型、委托,的小案例

1.现有一个字符串集合,集合中存的是数字,把大于等于2的数值,打印出来,需要用到扩展方法.泛型.委托 class Projram{ static void Main(String[] args){ //定义一个集合, List<string> list = new List<string>{"1","3","5","6","7"}; //var okList = list.GetLi

关于js中的事件委托小案例

需求:页面上有一个按钮,和一个空的ul,要求点击按钮,会给ul中动态添加li元素,然后,点击动态添加的元素,在控制台上输出,这是第几个元素 <ul> </ul> <button>点击增加</button> var ul = document.querySelector('ul'); var btn = document.querySelector('button'); //动态添加元素 btn.addEventListener('click',functio