×

lambda表达式c 跑马灯

C#中,怎么用Lamda表达式写跑马灯?C#内置的几种委托详解,lambda表达式的演变

admin admin 发表于2022-06-13 01:12:07 浏览140 评论0

抢沙发发表评论

C#中,怎么用Lamda表达式写跑马灯


C#是语言,跑马灯是效果,你首先要确定你实现效果用的技术,是winform还是WPF,或者是网页技术,c#中匿名表达式叫Lambda。


WPF中可以使用自定义模板(XMAL)来实现跑马灯,网页中使用JS+JQuery来实现跑马灯,都不需要C#语言,也谈不上lambda表达式来实现。

Winform中的代码:

//程序的构造函数
{
            Timer HelpTime = new Timer();//实例化一个时间控件
            HelpTime.Enabled = true;//让时间控件可用
            HelpTime.Interval = 150;//时间间隔150毫秒
            p = new PointF(this.HelpText.Size.Width, 0);
            HelpTime.Tick+=new EventHandler(HelpTime_Tick);//注册时间控件的Tick事件
}
 public string text = “csdn baihe_591,文字改变时,重新显示,文字改变时,重新显示,文字改变时,重新显示,文字改变时,重新显示!“;
        PointF p;
        Font f = new Font(“宋体“, 10);
        Color c = Color.FromArgb(237,232,236);
        string temp;
        private void HelpTime_Tick(object sender, EventArgs e)
        {
            Graphics g = this.HelpText.CreateGraphics();
            SizeF s = new SizeF();
            s = g.MeasureString(text, f);//测量文字长度
            Brush brush = Brushes.Blue;
            g.Clear(c);//清除背景
            if (temp != text)//文字改变时,重新显示
            {
                p = new PointF(this.HelpText.Size.Width, 0);
                temp = text;
            }
            else
                p = new PointF(p.X - 10, 0);//每次偏移10
            if (p.X 《= -s.Width)
                p = new PointF(this.HelpText.Size.Width, 0);
            g.DrawString(text, f, brush, p);
        }

C#内置的几种委托详解,lambda表达式的演变


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 跨线程访问
{
class Program
{
static void Main(string args)
{
Action A = delegate
{
Console.WriteLine(“I am A “);
};

Action《int》 B = delegate(int i)
{
Console.WriteLine(“I am B “ + i);
};

Action《int, string》 C = delegate(int i, string s)
{
Console.WriteLine(“I am C “ + i + “ “ + s);
};

Action《int, string, int》 D = delegate(int i, string s, int j)
{
Console.WriteLine(“I am D “ + i + “ “ + s + “ “ + j);
};

Action《int, string, int, string》 E = delegate(int i, string s, int j, string t)
{
Console.WriteLine(“I am E “ + i + “ “ + s + “ “ + j + “ “ + t);
};

/*Action A = () =》
{
Console.WriteLine(“I’m A “);
};

Action《int》 B = (i) =》
{
Console.WriteLine(“I’m B “ + i);
};

Action《int, string》C = (i, s) =》
{
Console.WriteLine(“I’m C “ + i + “ “ + s);
};

Action《int, string, int》 D = (i, s, j) =》
{
Console.WriteLine(“I’m D “ + i + “ “ + s + “ “ + j);
};

Action《int, string, int, string》 E = (i, s, j, t) =》
{
Console.WriteLine(“I’m E “ + i + “ “ + s + “ “ + j + “ “ + t);
};*/

A();
B(1);
C(1, “a“);
D(1, “a“, 2);
E(1, “a“, 2, “b“);

Console.ReadKey();
}
}
}
-lambda表达式c

我们需要掌握理解好匿名委托,因为,在我们的跨线程访问控件中,一旦我们在非UI线程访问控件就会出错,这是我们利用匿名委托就能解决好问题。


C++编译器是怎么处理lambda的


lambda是c11才支持的新特性,现在的编译器只要支持c11的都普遍的支持lambda。比如 vs和 gcc4.5以上需要 -std=c++11。

至于编译器怎么处理lambda,和 std::function《.返回值类型(参数类型列表)》 差不多。
#include 《functional》
void fun(std::function《void(int i)》 func){
//对func进行调用
}
在函数体中你可以这么调用
fun((int i) { //把lambda作为参数std::function 类型 给fun方法调用。

});
-跑马灯