10.数据流技术在应用程序中,进程需要文件来保存数据,这就要用到对文件的输入/输出操作。本章主要介绍和文件相关的类,以及目录、文件操作和创建、读/写文件的方法 文件操作:using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; // 这是一个处理文件流的命名空间// 数据流技术:文件的操作namespace Lesson_38_1 {class Program{static v...
11.事件和委托1.委托定义委托和类一样,是一种用户自定义的类型(所以也是引用类型)。但类表示的是数据和方法的集合,而委托则持有一个或多个方法,以及一系列的预定义操作。 委托是类型,就好像类是类型一样。与类一样,委托类型必须在被用来创建变量以及类型的对象之前声明。delegate void MyDel(int x);创建委托对象 委托类型 变量using System; using System.Collections.Generic; using System.Linq; using ...
最大区别为结构体为值类型存在栈上,类为引用类型存在堆上。 细节区别: 1.结构体不具有多态、继承特性,只有封装,所以不能用protected修饰符,而类可以 2.结构体变量在申明时不能初始化,而类可以(后面说明) 3.结构体不能申明无参构造函数,而类可以 4.结构体申明有参构造函数后,不会覆盖无参构造函数,而类会覆盖 5.结构体不能申明析构函数,而类可以 6.结构体要在构造函数中初始化所有成员变量,而类不用 7.结构体不能在内部...
问题描述: 基础连接已经关闭: 接收时发生错误。 问题分析: 1、Framework调用WCF接口,WCF将数据进行序列化然后传输给Framework时,数据中包含未初始化的DateTime类型的数据导致序列化失败,无法将数据传输给Framework。 这里的序列化就是将数据转换成json格式的字符串。 解决办法: (1)给数据中DateTime类型的变量赋值,使数据能够成功进行序列化。 (2)不通过WCF接口直接使用WCF的dll程序集调用,这样获取的数据就不需要进行...
StringBuilder 为什么用StringBulder?StringBuider的使用string与StringBuilder的区别常用函数了解string,请点击这里 为什么用StringBulder? 例子: string a = "str_1"; a = "str_2";在内存中创建"str_1"和"str_2"两个字符串,但只有"str_2"在被使用,"str_1"不会被修改或消失,这样就浪费了内存资源,而且字符串一旦创建就不可修改大小,每次使用System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要...
介绍 C#中通过Type类可以访问任意数据类型信息。 system.Type类以前把Type看作一个类,但它实际上是一个抽象的基类。 只要实例化了一个Type对象,实际上就实例化了Typc的一个派生类。 尽管一般情况下派生类只提供各种Type方法和属性的不同重载,但是这些方法和属性返回对应数据类型的正确数据,Type有与每种数据类型对应的派生类。 Type是许多反射功能的入口 。注意,可用的属性都是只读的:可以使用Type确定数据的类型,但不能使用它修改...
1、我们在Main()函数中,调用Test()函数,我们管Main()函数称之为调用者,管Test()函数称之为被调用者。如果被调用者想要得到调用者的值:1)、传递参数。2)、使用静态字段来模拟全局变量。(多个方法都需要使用同一个变量)语法:在类下面public static int _number = 10;如果调用者想要得到被调用者的值:1)、返回值 class Program {////使用静态字段模拟全局变量//public static int _number = 3;static void Main(string[] args...
(精华)2020年8月11日 C#基础知识点 匿名类的使用(object,var,dynamic) #region 3.0出了个匿名类 {<!-- -->Console.WriteLine("*****************匿名类**************");Student student = new Student(){<!-- -->Id = 1,Name = "Richard",Age = 25,ClassId = 2};student.Study();//-------------------------匿名类的使用--------------------------object model = new//.net 3.0 {<!-- -->Id = 2,Name = "undefined",Age = 2...
(精华)2020年8月11日 C#基础知识点 yield迭代器的使用 基本使用 /// <summary>/// 含有yield的函数说明它是一个生成器,而不是普通的函数。当程序运行到yield这一行时,该函数会返回值,并保存当前域的所有变量状态;/// 等到该函数下一次被调用时,会从上一次中断的地方开始执行,一直遇到下一个yield, 程序返回值, 并在此保存当前状态; 如此反复,直到函数正常执行完成。/// 迭代器模式是设计模式中行为模式(behavioral pattern)...
(精华)2020年8月11日 C#基础知识点 winform底层原理的讲解(发布订阅)实现控件 触发的事件函数 public static void Publisher(){<!-- -->Phone phone = new Phone(){<!-- -->Id = 123,Name = "华为P9",Price = 2499};// 执行订阅Subscriber();//价格变动会触发订阅者里的函数phone.Price = 500;} 发布者 /// <summary>/// 事件的发布者,发布事件并且在满足条件的情况下,触发事件/// </summary>public class Phone{<!-- -->publ...
(精华)2020年8月12日 C#基础知识点 序列化反序列化(XML,Json,二进制,soap) public class SerializeHelper{<!-- -->/// <summary>/// 二进制序列化器/// </summary>public static void BinarySerialize(){<!-- -->//使用二进制序列化对象string fileName = Path.Combine(Constant.SerializeDataPath, @"BinarySerialize.txt");//文件名称与路径using (Stream fStream = new FileStream(fileName, FileMode.Create, FileAccess.Re...
(精华)2020年8月12日 C#基础知识点 图片相关操作 /// <summary>/// 图片类/// </summary>public class ImageHelper{<!-- -->private static string ImagePath = ConfigurationManager.AppSettings["ImagePath"];private static string VerifyPath = ConfigurationManager.AppSettings["ImagePath"];//绘图的原理很简单:Bitmap就像一张画布,Graphics如同画图的手,把Pen或Brush等绘图对象画在Bitmap这张画布上/// <summary>/// 画...
索引器的使用示例如下所示: class Person{private string name;private int number;//这里要分配空间,否则在索引器里f将不会完成对象的实例化private Person[] f=new Person[5];public Person(){}public Person(string name,int number){this.name = name;this.number = number;}public Person this[int index]{get{//Console.WriteLine("0");return f[index];}set{//Console.WriteLine("1");f[index] = value;}}static void Main...
前言 在本章中,主要是借机vb.net教程这个C#基础篇的系列整理过去的学习笔记、归纳总结并更加理解透彻。 在.Net开发中,我们经常会遇到并使用过委托,如果能灵活的掌握并加以使用会使你在编程中游刃有余,然后对于很多接触C#时间 c#教程不长的开发者而言,较好的理解委托和事件并不容易。 本节主要是讲述对委托的定义、委托的使用、多播委托、泛型委托、匿名方法、Func和Action委托、Lambda委托,并对它们进行讨论。 说明 简单说它...
(精华)2020年8月15日 C#基础知识点 Unity容器的底层的实现方式 public interface IXTContainer{<!-- -->void RegisterType<TFrom, TTo>(LifeTimeType lifeTimeType = LifeTimeType.Transient);T Resolve<T>();}/// <summary>/// 容器--工厂/// </summary>public class XTContainer : IXTContainer{<!-- -->private Dictionary<string, RegisterInfo> XTContainerDictionary = new Dictionary<string, RegisterInfo>();/// <summary...