今天在看到有人提出方法中用过this的问题, 然后感觉自己也需要在这里作个记录. 顺便提一下其用法与细节,注意:在2.0下面使用会出现引用错误.因为这个是3.0后的产物
扩展方法的作用:
可以直接对.netFrame类库进行扩展,减少代码量.
使用时应注意的问题:
1、所在类的类名在用做扩展方法的时候无效
2、扩展方法必须是在静态类中的静态方法,静态方法的格式有特殊要求
3、扩展方法也可以当作普通的静态方法使用
当我们看到有“小标箭头”的方法就是扩展方法了,请输入下面代码,然后他细看一下,方法与扩展方法的图标.
using
System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
namespace Csharp.Test
{
public class Program
{
public static void Main( string [] args)
{
// 代码调用
Student student = new Student { Name = " BBB " , Age = 20 };
Console.WriteLine(student.IsValue( " BBB " ));
// 输出true
Console.WriteLine(student.TrueName( " BBB " ));
// 输出true
Console.ReadLine();
}
}
public class Student
{
public string Name { get ; set ; }
public int Age { get ; set ; }
}
public static class test
{
public static bool IsValue( this Student student, object o)
{
if (student.Name == o)
{
return true ;
}
return false ;
}
}
public static class EooPoo
{
public static string TrueName( this Student student, object o)
{
if (student.Name == o)
{
return student.Name = " AAA " ;
}
else
{
return student.Name;
}
}
}
}
using System.Collections.Generic;
using System.Text;
using System.Threading;
namespace Csharp.Test
{
public class Program
{
public static void Main( string [] args)
{
// 代码调用
Student student = new Student { Name = " BBB " , Age = 20 };
Console.WriteLine(student.IsValue( " BBB " ));
// 输出true
Console.WriteLine(student.TrueName( " BBB " ));
// 输出true
Console.ReadLine();
}
}
public class Student
{
public string Name { get ; set ; }
public int Age { get ; set ; }
}
public static class test
{
public static bool IsValue( this Student student, object o)
{
if (student.Name == o)
{
return true ;
}
return false ;
}
}
public static class EooPoo
{
public static string TrueName( this Student student, object o)
{
if (student.Name == o)
{
return student.Name = " AAA " ;
}
else
{
return student.Name;
}
}
}
}
其实按上面的意思,最简单的一句话就是,类的方法可以扩展在别的类上面通过参数this来做扩展方法.