匿名函數、委託、lambda表達式、擴展方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 匿名函數與lambda
{
class Program
{
static void Main(string[] args)
{
//委託調用方法
someDelegate1 sv = new someDelegate1(SayHello);
//匿名函數 只能在委託中使用
//語法 委託對象=delegate(參數列表){表達式};
someDelegate f = delegate(string s)
{
Console.WriteLine("匿名函數:hello," + s);
};
f("zhangfeng");
//lambda表達式,簡化操作,初看很恐怖,多用於和linq混合使用
someDelegate f1 = (s1) =>
{
Console.WriteLine("lambda表達式:hi,"+s1);
};
f1("lambda");
//lambda表達式+linq示例
int[] values = { 3, 6, 9, -7, 32 };
foreach (int i in values.Select(i => i * 2))
{
Console.WriteLine(i);
}
//擴展方法 .net 3.5版本新加的,早期版本用不了,linq是用擴展方法實現的
string str1 = "[email protected]";
//擴展方法的調用,調用擴展方法,第一個參數 其實是.前面的對象
Console.WriteLine(str1.IsEmail());
//跟擴展方法比較,普通調用
Console.WriteLine(StringHelper.IsEmail(str1));
//擴展方法重載,第二個參數照實寫
Console.WriteLine(str1.IsEmail("sv"));
Console.Read();
}
static string SayHello()
{
return "h1";
}
}
//實現擴展方法,定義類前面要加static
static class StringHelper
{
//方法前面要加static(靜態類中方法必須加static),參數變量加this,第一個參數爲待擴展的類型,調用他的類型必須與第一個參數類型相同
public static bool IsEmail(this string s)
{
if(s.Contains("@"))
{
return true;
}
return false;
}
public static bool IsEmail(this string s,string v)
{
if (s.Contains("@"))
{
return true;
}
return false;
}
}
delegate void someDelegate(string s);
delegate string someDelegate1();
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 匿名函數與lambda
{
class Program
{
static void Main(string[] args)
{
//委託調用方法
someDelegate1 sv = new someDelegate1(SayHello);
//匿名函數 只能在委託中使用
//語法 委託對象=delegate(參數列表){表達式};
someDelegate f = delegate(string s)
{
Console.WriteLine("匿名函數:hello," + s);
};
f("zhangfeng");
//lambda表達式,簡化操作,初看很恐怖,多用於和linq混合使用
someDelegate f1 = (s1) =>
{
Console.WriteLine("lambda表達式:hi,"+s1);
};
f1("lambda");
//lambda表達式+linq示例
int[] values = { 3, 6, 9, -7, 32 };
foreach (int i in values.Select(i => i * 2))
{
Console.WriteLine(i);
}
//擴展方法 .net 3.5版本新加的,早期版本用不了,linq是用擴展方法實現的
string str1 = "[email protected]";
//擴展方法的調用,調用擴展方法,第一個參數 其實是.前面的對象
Console.WriteLine(str1.IsEmail());
//跟擴展方法比較,普通調用
Console.WriteLine(StringHelper.IsEmail(str1));
//擴展方法重載,第二個參數照實寫
Console.WriteLine(str1.IsEmail("sv"));
Console.Read();
}
static string SayHello()
{
return "h1";
}
}
//實現擴展方法,定義類前面要加static
static class StringHelper
{
//方法前面要加static(靜態類中方法必須加static),參數變量加this,第一個參數爲待擴展的類型,調用他的類型必須與第一個參數類型相同
public static bool IsEmail(this string s)
{
if(s.Contains("@"))
{
return true;
}
return false;
}
public static bool IsEmail(this string s,string v)
{
if (s.Contains("@"))
{
return true;
}
return false;
}
}
delegate void someDelegate(string s);
delegate string someDelegate1();
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.