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方法调用。
});
-跑马灯