1.c#运算符
checked--溢出检查
is --判断是否类型对象
as -引用类型的显式类型转换
2.委托--只是包含方法地址的对象类型
3.抽象类里访问的类必须是public的,否则就报编译错误:可访问性不一致。
4.正则表达式-“\b"正则开始和结束标识, “*"匹配所有字符,正则命名空间:System.Text.RegularExpressions;
5.System.Collections对象类型,泛型集合类System.Collections.Generic
6.c#里也有指针,不过要把项目属性改成可以运行不安全代码。也有析构函数不过要实现IDisposeable接口。
7.反射:和java反射类似
2009-03-30 16:28 328人阅读 收藏 举报
一.什么是反射
在运行时环境,能否根据一个类的名字,来得到这个类的属性和方法?对于任何一个运行时的对象能否动态调用这个对象的方法?答案是可以的。这种动态的获取类的信息以及动态调用一个对象的方法的机制叫做反射。
反射提供的主要功能:
1.在运行时判断任意一个对象所属的类
2.在运行时构造一个类的对象
3.在运行时判断一个类所具有的属性和方法
4.在运行时调用一个对象的方法
实现反射的过程:
1.加载一个类
2.根据这个类动态创建一个对象
3. 动态得到这个对象的方法
4.调用这个对象的方法
二.JAVA中的反射
需要导入包:import java.lang.reflect;
try {
//加载类的三种方法
// Class<?> classType = Class.forName("com.ls.reflecttest.Person");
// Class<?> classType = Person.class;
Class<?> classType = Person.getClass();
//创建对象,第一种方法只能调用默认的构造方法,第二种方法可以调用带参的构造方法
// Object object = classType.newInstance();
Object object = classType.getConstructor(new Class[] {int.class, String.class, int.class}).newInstance(new Object[] {12, "wdw", 12});
//动态得到该对象的方法
Method sayHelloMethod = classType.getMethod("sayHello", new Class[]{String.class});
sayHelloMethod.invoke(object, new Object[] {"wdw"});
//动态得到所有属性,
Field[] filds = classType.getDeclaredFields();
for(int i=0; i < filds.length; i++) {
System.out.println(filds[i].getName());
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
此外还有很多方法:得到所有方法getDeclaredMethods(), getField()等等
三.C#中的反射
感觉跟JAVA中的反射机制是一样的,首先引入命名空间:using System.reflection;
//得到类型
Type type = Type.GetType("ReflectTest.Person");
//得到该类型所在的程序集
Assembly assembly = Assembly.GetAssembly(type);//类似于JAVA中的加载
//C#中可以直接加载文件
//Assembly assembly = Assembly.LoadFile("文件路径"); //JAVA中没有这种方法
//创建对象
Object o = assembly.CreateInstance("ReflectTest.Person");
//动态获得方法
MethodInfo method = type.GetMethod("ToString");
//调用方法
Console.WriteLine(method.Invoke(o, new object[] { }));
四.总结
原来各种语言都是相同的,反射机制也是一样的只不过换了几个类,几个方法名而已,慢慢体会其实不单单是反射机制,两种语言有很多相同之处,思想都是一样的,继续努力,加油!对比原来的java框架,看是否能改造目前c#框架至少把反射使用
发送邮件
http://wenku.baidu.com/view/86719e7f31b765ce05081463.html
http://apps.hi.baidu.com/share/detail/6343308
http://www.sudu.cn/info/html/edu/20071219/113184.html
分享到:
相关推荐
c#技术大全之语法与高级应用,包括:c#多线程 c#接口 c#对Word C# 对Exel c#打印技术 c#泛型学习 C# 语音编程 c#文件序列化与反序列化。等
如果您刚开始学习编程或 C#,则应从 Visual C# 指导教程开始。您可能还想访问 Visual C# 开发中心,此处提供很多教程、示例和视频,可帮助您入门。 有关特定的关键字、运算符和预处理器指令的信息,请参见 C# 参考...
C#基础练习题C#基本语法编程练习,理解C#程序语法结构,掌握顺序结构、选择结构和循环结构语法的程序设计方法,理解运算符的优先级。
入门者必看的c#语法书(CSharp 3.0 语法指南)
C# 编程思想 c#类 c#语法
C# 语法全解,都是分好的文档,适合大家交流学习。
C#基本语法介绍,很适合初学者。特别是对C#从开始的朋友,有很大的帮助
C#是一种简单、现代、面向对象和类型安全的编程语言,由C和C++发展而来。C#(发音为“C霎普”)牢固地植根于C和C++语言族谱中,并且会很快被C和C++程序员所熟悉。C#的目标在于把Visual Basic的高生产力和C++本身的...
20070511am--.NET Windows编程系列课程(2):C#语法和面向对象编程 MICROSOFT WEBCAST
2. WPF基础之XAML 9 3. WPF基础之基元素 23 4. WPF基础之属性系统 26 5. WPF基础之路由事件 33 6. WPF基础之布局系统 46 7. WPF基础之样式设置和模板化 51 8. 详谈WPF开发中的数据虚拟化 64 XAML语法 74 1. XAML语法...
为大家学习C#提供帮助,使大家熟悉C#的语法结构,提高C#编程技巧
- C#编程语言 - OPC UA(OPC Unified Architecture)和OPC DA(OPC Data Access)通信协议 - 工业上位机 1. C#编程语言: - C#是一种通用的、面向对象的编程语言,由微软公司开发。它在开发Windows应用程序、Web...
NET Windows 编程系列2.0 C#语法和面向对象编程
W3SCHOOL学校的C#编程基础-非常详尽,包含与JAVA、C++等的比较,C#特点、语法、程序结构等,非常棒。
.NET framework C#编程语言的基本知识介绍
抽签系统-c#编程制作-文件读写的编写过程,能够锻炼开发者的语法能力。尤其是文件读写。
第2篇 C#面向对象编程 第3章 羽翼丰满:C#的面向对象 第4章 双管齐下:抽象类和接口 第5章 无懈可击:调试异常与编码标准 第6章 添砖加瓦:字符、字符串 处理与正则表达式 第7章 兵分两路:数组与集合 第8章 ...
.NET Windows编程系列课程(2):C#语法和面向对象编程
摘要 本文描述 C# 编程语言的语法、语义和设计。 作者 Scott Wiltamuth 和 Anders Hejlsberg