第一范文网 - 专业文章范例文档资料分享平台

.net学习心得

来源:学习心得体会 时间:2023-07-15 本文由依依 分享 阅读量: 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。下载word有问题请添加QQ:admin处理,感谢您的支持与谅解。点击这里给我发消息
  • 相关推荐
.net学习心得

  1.反射:反射是.net中的重要机制,通过反射可以在运行时获得.net中每一个类型,包括类、结构、委托和枚举的成员,包括方法、属性、事件,以及构造函数等。有了反射,既可以对每一个类型了如指掌。

  下面来演示一下反射的实例

  (1)新建一个类库项目。在解决方案上单击右键选择添加“新建项目”,在弹出来的框中选择“类库”,在下面名字栏中输入classlib。然后删除class1类,新添加一个类“classperson”,添加如下代码:

  namespace classlib

  {

  public class classperson

  {

  public classperson():this(null)

  {

  }

  public classperson(string strname)

  {

  name = strname;

  }

  private string name;

  private string sex;

  private int age;

  public string name

  {

  get { return name; }

  set { name = value; }

  }

  public string sex

  {

  get { return sex; }

  set { sex = value; }

  }

  public int age

  {

  get { return age; }

  set { age = value; }

  }

  public void sayhello()

  {

  if (null==name)

  console.writeline("hello world");

  else

  console.writeline("hello," + name);  

  }

  }

  }

  添加完之后编译生成一下,就会在这个类库项目中的bin\debug中有一个classlib.dll文件。然后添加一个控制台应用程序。引入system.reflaction的命名空间。添加的代码如下:

  using system;

  using system.collections.generic;

  using system.linq;

  using system.text;

  using system.reflection;//添加反射的命名空间

  namespace consoleapplication4

  {

  public class program

  {

  static void main(string[] args)

  {

  console.writeline("列出程序集中的所有类型");

  assembly ass = assembly.loadfrom("classlib.dll");

  type[] mytype = ass.gettypes();

  type classperson = null;

  foreach (type p in mytype)

  {

  console.writeline(p.name);

  if (p.name=="classperson")

  {

  12

  classperson = p;

  }

  }

  console.writeline("列出classpersonl类中的所有的方法");

  methodinfo[] md = classperson.getmethods();

  foreach(methodinfo m in md)

  {

  console.writeline(m.name);

  }

  console.writeline("实例化classperson类,并调用sayhello方法");

  object obj = activator.createinstance(classperson);

  object objname=activator.createinstance(classperson,"飞鹰");

  methodinfo mysayhello = classperson.getmethod("sayhello");

  mysayhello.invoke(obj, null);//无参数构造函数

  mysayhello.invoke(objname, null);//有参构造函数

  console.readkey();      

  }

  }

  }

  运行之后的结果是:

  列出程序集中的所有类型

  classperson

  列出classpersonl类中的所有的方法

  get_name

  set_name

  get_sex

  set_sex

  get_age

  set_age

  sayhello

  tostring

  equals

  gethashcode

  gettype

  实例化classperson类,并调用sayhello方法

  hello world

  hello,飞鹰

  2.using的作用

  (1)引入命名空间,如:using system。

  (2)using别名。

  格式:using 别名=包括详细命名空间信息的具体的类型

  例如:在两个命名空间(namespace1,namespace2)里各有一个myclass类,这时可以这样引入命名空间,

  using aclass=namespace1.myclass;

  using bclass=namespace2.myclass;

  实例化时:

  aclass my1=new aclass;

  bclass my2=new bclass;

  (3)using定义范围

  即时释放资源,在范围结束时处理对象。例如:

  using(class1 cls1=new class1())

  {

  }

  在这个代码段结束时会触发cls1的dispose方法释放资源。

12

搜索“diyifanwen.cc”或“www.diyifanwen.cc”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新学习心得体会《.net学习心得》全文阅读和word下载服务。

相关热搜:心得  学习  net  

本文链接:https://www.diyifanwen.cc/article/l9yu.html(转载请注明文章来源)
Copyright © 2018- 第一范文网 版权所有 最新更新 | 热门文章 | TAG专题 | 网站地图 | XML地图
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:admin 邮箱:admin@qq.com
闽ICP备2022016491号-2
Top