1.使用Marshal类的StructureToPtr与PtrToStructure函数对object与byte数组进行转换 命名空间:System.Runtime.InteropServices/// <summary>/// 将对象转换为byte数组/// </summary>/// <param name="obj">被转换对象</param>/// <returns>转换后byte数组</returns>public static byte[] ObjectToBytes(object obj){byte[] result = new byte[Marshal.SizeOf(obj)];IntPtr intPtr = Marshal.UnsafeAddrOfPinnedArrayElement(result...
6.1多态概述: 多态:即指多个不同的类对同一个方法的不同实现。多态允许子类对从父类继承的方法进行重新实现 多态的使用在c#中,子类使用new关键字来隐藏父类成员,通过方法的隐藏和方法的重写实现多态。 **第一种方法的隐藏:**实际调用父类方法 //定义人类,包含工作方法 class Person{public void Work(){Console.WriteLinw("人在工作");} } //定义医生类和程序员类 class Docter:Person{public new void Work(){Console.Write...
IL基础 intermeditae Language的简称,中文是中间语言 不管是什么语言编的.NET程序,最后都会被各自的编译器编译成IL指令,程序运行的时候**,.NET JIT编译器从程序集读入IL指令并将其动态编译为可被本地CPU执行的机器指令再执行** 使用ildasmIL可以看成是一个面向对象的汇编语言,他提供了许多指令直接对对象进
动态获取对象的性能值,这个在开发过程中经常会遇到,这里我们探讨一下何如高性能的获取属性值。为了对比测试,我们定义一个类Peoplepublic class People {public string Name { get; set; } }?然后通过直接代码调用方式来取1千万次看要花多少时间:private static void Directly() {People people = new People { Name = "Wayne" };Stopwatch stopwatch = Stopwatch.StartNew();for (int i = 0; i < 10000000; i++){object value ...
DataSet 它是存在于内存中的一个数据库 它的数据来自于数据库服务器的数据 DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合。 创建DataSet对象 引入命名空间 System.Data 实例化: DataSet ds =new DataSet( ); 属性和方法属性 用DataAdapter可对来自数据源的记录进行操作。通过使用4个DataAdapter属性(指定执行某条SQL语句或调用某个存储过程)中的一个,可以指定所要执行...
C#课件 指针: 支持,但是只在很少的使用的非安全模式下才支持,通常以引用取代指针 Java完全不支持,代之以引用, C++:支持 编译后的形式:.net中间语言(IL) JAVA:字节码,C++可执行代码 Core:Parallel Extensions Managed Extensibility Framework LINQ Languages Dynamic Language Runtime Base Class Library .NetWork运行平台 Visual Studio开发工具 CLR概述 CLR(Common Language Runtime,CLR)公共语言运行时,也叫公共语言运...
小游戏坦克大战,看似是一个很小的程序。 但实际使用做起来,发现需要用到多种功能: 多线程并发与同步,事件触发,GDI绘图。 可以采用事件订阅 与事件触发的观察者模式。 从网络上下载声音文件 以及 各种坦克图片等素材。 实体分类如下: 1.有静止的地图元素【MapElement】:如墙体、水域、草丛、钢铁墙、老鹰等,为了区分不同的元素,同时加入地图元素类型枚举【MapElementCategory】。 2.有坦克【Tank】,又细分为玩家坦克【Pla...
一个子类不可以继承多个父类,继承的两个特性:传递性,单根性。 父类可以有多个子类,子类只能有一个父类。多态就是同一操作作用于不同类的实例,不同的类将进行不同的解释,最后产生不同的结果。任何类都可以从另外一个类继承,这就是说这个类拥有它继承除私有成员外的所有成员。调用父类的构造函数时: 在默认情况下c#中使用new创建子类对象时,首先调用父类无参构造函数,在调用子类构造函数 最后在输出调用的类。例题p84.使用...
问题描述使用LINQ如何实现对以上List集合的去比如有如下的List集合:1 Item1 IT00001 $100 2 Item2 IT00002 $200 3 Item3 IT00003 $150 1 Item1 IT00001 $100 3 Item3 IT00003 $150重操作,具体实现有哪些呢? 方案一var distinctItems = items.Distinct(); 如果需要对泛型实体中的部分属性进行去重操作,则可以创建一...
本文描述将对象(List<T>)序列化到 XML 文档中和从 XML 文档中反序列化为对象(List<T>)。 命名空间: System.Xml.Serialization 程序集: System.Xml.Serialization(在 System.Xml.Serialization.dll 中) 通用的序列化类(包含序列化和反序列化方法)如下:/// <summary>///序列化/// </summary>/// <typeparam name="T"></typeparam>/// <param name="serialObject"></param>/// <returns></returns>public static string XmlSer...
关于对象不能从DBNull转换为其他类型,在数据库查找数据时,绑定了为空值的字段。 解决方法: 1.加判断 if (dt.Rows[i][j] == DBNull.Value){ num = 0; }else{ num = Convert.ToInt32(dt.Rows[i][j]); } 2.在读取数据库数据时判断.如"Select IsNull(score,0) from score" 先把为null的数据表示为0 3.使用TryParse Convert.ToInt32 与 int.Parse 较为类似,实际上 Convert.ToInt32 内部调用了 int.Parse: * Convert.ToInt32 参数为 ...
已经有快一个月没有更新博客了,一方面是二宝出生了,休了半个月假。再一个就是实在是太忙了。 这篇遍历的已经计划很久了,一直在草稿状态。 在实际项目中,我们有时候无法通过一些名字或者信息来查找所要的对象,最快的方式就是通过遍历。然后再去通过细节来找到想要的数据。遍历图块///这是根据名字来遍历图块的定义public static SketchBlockDefinition GetBlockInstenseByBlockName(string blockName){SwApp = ConnectToSolidW...
扩展类 public static class ObjectExtensions{ public static IEnumerable<TSource> DistinctBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector){HashSet<TKey> seenKeys = new HashSet<TKey>();foreach (TSource element in source){if (seenKeys.Add(keySelector(element))){yield return element;}}}}对象: /// <summary>/// 返回题目数据/// </summary>[Serializable]public cl...
面向对象 第一章,初探类与对象 1.1、专业单词单词释义OOP 面向对象编程class 类object 对象public 公开的、公有的private 私有的protected 受保护的internal 内部的1.2、什么是面向对象编程面向对象编程(Object Oriented Programming ,OOP,面向对象程序设计)是一种计算机编程结构,与面向过程编程相比,具有高重用性、灵活性和扩展性的优点。C#语言是一种面向对象的编程语言,它的设计思想是将要解决的问题里面的相关对象分析...
namespace Assets {class Student:Person //子类Person继承了父类{static void Main(string[] args){Person p1 = new Person(); // new Person();才是创建新对象//父类型引用 指向 父类型对象//现象:只能访问父类成员Student s1 = new Student();//子类型引用 指向 子类型对象//现象:能够访问父类成员/也可以访问子类成员Person p2 = new Student();//父类型引用 指向 子类型对象//现象:只能够访问父类成员(受类型制约),...