ref和out的区别:
- ref的参数必须在方法外初始化,out的参数在方法内必须赋值
int a = 10;
int b = 20;
ds(ref a,ref b);//ref外部初始化,传递值类型引用地址
Console.WriteLine(a);
Console.WriteLine(b);
Console.ReadKey();
}
public static void ds(ref int x,ref int y)
{
x = 20;//不使用第三变量,互变值
y = 10;
}
//-----------------------OUT------------------------
int a ;
int b ;
ds(out a, out b);//在这个函数体内进行赋值
Console.WriteLine(a);
Console.WriteLine(b);
Console.ReadKey();
}
public static void ds(out int x,out int y)
{
x = 20;//方法体内赋值
y = 10;
}
is和as类型转换:
- 可以用来判断一个对象是否兼容给定的类型。
- as是两个引用之间进行转换,成功则赋值,不成功则返回null
//AS使用
using (FileStream fs = new FileStream("person.xml", FileMode.Open, FileAccess.ReadWrite))
{
//创建xml序列化器
XmlSerializer xml = new XmlSerializer(typeof(List<Person>));
List<Person> ulist = xml.Deserialize(fs) as List<Person>;//接收一个文件流,反序列化返回一个Object类型的结果
this.dataGridView1.DataSource = ulist;
}
//IS使用
string str = "10";
if (str is string)
{
Console.WriteLine("可以");
}
else
{
Console.WriteLine("不可以");
}
Console.ReadKey();