当前位置:首页 > Windows程序 > 正文

C#笔记誊录二

2021-03-24 Windows程序

c#编译器把源码编译成IL(中间)代码,再由CLR通过即时编译器把IL代码编译成本机机器语言(平台语言)
测试服务器的网速

ctrl+k+d 代码对其 CTRL+K+S #REGION代码折叠 ctrl+r+e 连敲2个回车:封装字段 shift+alt+f10:实现接口

XML序列化:把对象写到XML文档中
标识某个对象的某个字段不能被序列化,只要把[XmlIgnoreAttribute]放在某个字段前面
二进制流序列化:把对象序列化成二进制流进行网络传输
标识某个对象的某个字段不能被序列化,只要把[NonSerialized]放在某个字段前面
   “序列化”可被定义为将对象的状态存储到存储媒介中的过程。在此过程中,对象的公共字段和私有字段以及类的名称(包括包含该类的程序集)都被转换为字节流,然后写入数据流。在以后“反序列化”该对象时,创建原始对象的精确复本。
一、为什么要选择序列化
    一个原因是将对象的状态保持在存储媒体中,以便可以在以后重新创建精确的副本;
    另一个原因是通过值将对象从一个应用程序域发送到另一个应用程序域中。
    例如,序列化可用于在 ASP.NET 中保存会话状态并将对象复制到 Windows 窗体的剪贴板中。
    远程处理还可以使用序列化通过值将对象从一个应用程序域传递到另一个应用程序域中。
序列化的目的: 1、以某种存储形式使自定义对象持久化;
2、将对象从一个地方传递到另一个地方。
实质上序列化机制是将类的值转化为一个一般的(即连续的)字节流,然后就可以将该流写到磁盘文件或任何其他流化目标上

XML的一般用处:配置文件,保存静态数据,一般用于webservice和webconfig文件中

反射:程序运行时,动态获取程序集的相关信息,类,方法等。动态创建的类的实例,调用类中的方法,访问类中的属性。
一般用于:开发插件,动态加载程序组件,动态更换底层数据库类型

hashset用来存放不重复的数据
hashset<int> set=new hashset<int>()
set.add(5);
set.add(3);
set.add(5);
//最后输出没有重复的数据

静态变量的存储字段到程序结束的时候才回收,在整个项目中相当于全局变量,如果用多了,会很占内存
Random r = new Random();
r.Next(1,16);//返回一个1到15非负的随机数
r.Next()///返回一个非负的随机数
r.Next(151)//返回一个0到150的非负随机数

各种变量的默认值:bool:false,数字int:0,字符char:\0,引用类型(string):null

在监视窗口中
值类型前面加个&,查看内存地址
引用类型前面加个*,查看内存地址

32位计算机,用32个二进制位来表示一个整数,同时使用32个二进制位来表示一个内存地址
一个内存空间放运行方法中的代码--线程栈
一个内存空间放对象名--托管堆
存放大对象,静态对象
每个INT占4个字节,64位8个字节

垃圾收集器:手动调用,system.gc.collect(0);会根据你系统当前的内存的使用情况进行优化
每次进行

属性:
        //一般的属性,本质就是一个方法,后台提供的get,set的方法
       

private static string ploginname; public static string Ploginname { get; set; }


        //自动属性,方便的时候用,只是存取单个值,没有复杂的逻辑的功能,没有特殊的控制要求的时候
        //get和set必须成对存在
        //系统后台生成Type字段,用于保字段的值
       

public static string Type { get; set; }

        //抽象属性 在抽象类中存在的
        //抽象属性与自动属性很相识,只是在前面加了个abstract来修饰而已
        //后台没有方法体,因此可以是只读,而自动属性不可以,必须get和set成对出现
       

abstract class MyBase { public abstract string Test//要求子类重写 { get; set; } //抽象的只读属性 public abstract string Test2 { get; } public abstract string Test1 { get; set; } } class MySub : MyBase { string test;//子类必须提供字段 public override string Test//重写属性 { get { return test; } set { test = value; } } //此时重写基类的属性,变成了自动属性,后台生成字段来保存变量的值 public override string Test1 { get; set; } //重写的时候需要注意,子类只重写父类提供的,如果父类只提供了只读属性,则子类 //也只能重写只读的,而不能加set进去 public abstract string Test2 { get{return test;} } }

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/66855.html