目录
1、隐式类型局部变量
使用var关键字隐藏变量的数据类型。
注意点:
- 声明隐式变量时一定要同时初始化,否则报错
- 声明变量不能赋值为NULL (因为赋为NULL,编译器无法推断出这个变量的具体数据类型)
- 声明一个局部变量后,他仍然具有强类型。如下列代码:
var a=10;
a=”hello”; //这样编译器会报错,因为他本身是int类型
class Program
{
static void Main(string[] args)
{
//隐式类型局部变量
var age = 25;
var username = "shaocx";
var userList = new string[] { "tom", "tilee", "gates" };
foreach (var item in userList)
{
Console.WriteLine(item);
}
//需要注意的问题
//1、不能赋值为NULL
//var product;//报错,无法将<NULL>赋予隐式类型化的变量
//var customer = null; //报错,无法将<NULL>赋予隐式类型化的变量
//2、隐式变量是强类型,不能改变数据类型
//var i = 15;
//i = "666";//报错,无法将string隐式转换为int
Console.ReadKey();
}
}
-
2、匿名类型
匿名类里的属性随意定义,想定义什么就定义什么。
static void Main(string[] args)
{
var stu = new { username="shaocx",age=16};
Console.WriteLine("姓名:{0},年龄:{1}",stu.username,stu.age);
Console.ReadKey();
}
-
3、匿名方法
private delegate void myDelegate(string type,string name);//定义委托
public static void myMethod(string type,string name)
{
Console.WriteLine(type+"输出:" + name);
}
static void Main(string[] args)
{
#region 使用委托方式
myDelegate md = new myDelegate(myMethod);
myDelegate md1 = myMethod;
md("委托方法","shaocx");
md1("委托方法","我是鬼");
#endregion
#region 使用匿名方法方式(其实就是简化了使用委托的操作)
myDelegate md2 = delegate (string type,string name) { Console.WriteLine(type + "输出:" + name); };
md2("匿名方法","张三");
#endregion
Console.ReadKey();
}
-
4、Lambda表达式
示例:
class Program
{
private delegate void myDelegate(string name);
private delegate void myDelegate2(string name, int age);
static void Main(string[] args)
{
//Lambda表达式是对匿名方法的又一次简化
myDelegate md = name => Console.WriteLine(name);
md("shaocx");
//多参数的Lambda表达式
myDelegate2 md2 = (name, age) =>
{
Console.WriteLine("姓名:{0},年龄:{1}", name, age);
};
md2("牛顿", 55);
Console.ReadKey();
}
}