c# this关键字用法代码详解
用法1为原始类型扩展方法
先说一下,this后面跟的类型,就是要拓展方法的类型。注意要写在静态类中的静态方法,不然有些情况下访问
//////扩展类用于为原始类扩展方法 /// publicstaticclassAM_Extends { //////为string类扩展了一个child方法,实现某功能 /// ////// publicstaticvoidChild(thisstringstr,stringnew_str) { objectobj=str; str=new_str; } } 定义扩展方法 
privatevoidForm1_Load(objectsender,EventArgse)
{
stringst1="123";
stringst2="";
stringst3="";
st3=st2.Child(st1);//st3的值为“123”
}
调用实例
用法2this代表当前类的实例对象
用法3用this串联构造函数
publicclassTest
{
publicTest()
{
Console.WriteLine("无参构造函数");
}
//this()对应无参构造方法Test()
//先执行Test(),后执行Test(stringtext)
publicTest(stringtext):this()
{
Console.WriteLine(text);
Console.WriteLine("有参构造函数");
}
}
用法4索引器(基于索引器封装EPList,用于优化大数据下频发的Linq查询引发的程序性能问题,通过索引从list集合中查询数据)
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Reflection;
usingSystem.Text;
namespaceMyDemo.Web
{
///
///EPList支持为List创建索引
/// 
///类型
publicclassEPList
{
#region成员变量
///
///索引
/// 
privateListm_Index=newList();
///
///缓存数据
/// 
privateDictionary>m_CachedData=newDictionary>();
///
///List数据源
/// 
privateListm_ListData=newList();
///
///通过索引值取数据
/// 
///索引字段
///字段值
/// 
publicListthis[string[]indexFields]
{
get
{
stringkey=string.Join(",",indexFields);
if(m_CachedData.ContainsKey(key))returnm_CachedData[key];
returnnewList();
}
}
#endregion
#region公共方法
///
///创建索引
/// 
///索引字段
publicvoidCreateIndex(string[]indexFields)
{
if(m_Index.Contains(indexFields))return;
m_Index.Add(indexFields);
}
///
///添加
/// 
///记录
publicvoidAdd(Trecord)
{
m_ListData.Add(record);
m_Index.ForEach(indexFields=>
{
stringkey=getKey(record,indexFields);
if(m_CachedData.ContainsKey(key))
{
m_CachedData[key].Add(record);
}
else
{
Listlist=newList{record};
m_CachedData.Add(key,list);
}
});
}
#endregion
#region私有方法
///
///获取值
/// 
///记录
///字段名
/// 
privateobjectgetValue(Trecord,stringfieldName)
{
Typetype=typeof(T);
PropertyInfopropertyInfo=type.GetProperty(fieldName);
returnpropertyInfo.GetValue(record,null);
}
///
///获取Key
/// 
///记录
///索引字段
privatestringgetKey(Trecord,string[]indexFields)
{
Listvalues=newList();
foreach(varfieldinindexFields)
{
stringvalue=Convert.ToString(getValue(record,field));
values.Add(field+":"+value);
}
returnstring.Join(",",values);
}
///
///获取Key
/// 
///索引字段
///字段值
/// 
privatestringgetKey(string[]indexFields,object[]fieldValues)
{
if(indexFields.Length!=fieldValues.Length)returnstring.Empty;
for(inti=0;i
给EPList创建索引,并添加数据
privateEPListGetEPListData()
{
EPListeplist=newEPList();
eplist.CreateIndex(newstring[]{"ParentId"});
stringsql="selectId,ParentId,Code,NamefromSysDepart";
SqlHelper.ExecuteReader(sql,null,(reader)=>
{
SysDepartInforecord=newSysDepartInfo();
record.Id=Convert.ToString(reader["Id"]);
record.ParentId=Convert.ToString(reader["ParentId"]);
record.Code=Convert.ToString(reader["Code"]);
record.Name=Convert.ToString(reader["Name"]);
eplist.Add(record);
});
returneplist;
}
给EPList创建索引,并添加数据   
privateEPListGetEPListData()
{
EPListeplist=newEPList();
eplist.CreateIndex(newstring[]{"ParentId"});
stringsql="selectId,ParentId,Code,NamefromSysDepart";
SqlHelper.ExecuteReader(sql,null,(reader)=>
{
SysDepartInforecord=newSysDepartInfo();
record.Id=Convert.ToString(reader["Id"]);
record.ParentId=Convert.ToString(reader["ParentId"]);
record.Code=Convert.ToString(reader["Code"]);
record.Name=Convert.ToString(reader["Name"]);
eplist.Add(record);
});
returneplist;
}   
给EPList创建索引,并添加数据
///
///获取子节点
/// 
///
///
privateIEnumerableCreateChildren(EPListdata,TreeInfonode)
{
stringid=node==null?"0":node.id;
ListchildNodes=newList();
//ParentId字段上创建了索引,所以这里就可以通过索引值直接取出下一层子节点数据,避免Linq查询引发的效率问题
varindexValues=newstring[]{"ParentId:"+id};
varchildData=data[indexValues];
childData.ForEach(record=>
{
varchildNode=newTreeInfo
{
id=record.Id,
text=record.Code+""+record.Name
};
childNodes.Add(childNode);
childNode.children=CreateChildren(data,childNode);
});
returnchildNodes.OrderBy(record=>record.text);
}
通过索引高效查询数据      
 以上就是小编整理的全部相关知识点内容,感谢大家的学习和对毛票票的支持。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。