C#中的一些基础
值类型与引用类型
值类型包括:【基本数据类型,如int,double,char,bool等】【枚举类型enum】【结构类型struct】
引用类型包括:【类类型,如基类Object,字符串类String等】【接口interface】【数组】
值类型可用ref与out,来实现参数的引用传递。
ref表示以引用方式将一个变量带入一个函数中,out用于实现一个函数多个返回值,用out修饰的参数需要在函数内部赋值。
访问修饰符
类的访问修饰符有:public,internal,abstract,sealed,static
成员的访问修饰符有:public,private,protected,internal,protected internal
abstract,virtual,new,overrid
static
extern
装箱与拆箱
把值类型数据放在堆上,是装箱。
把放在堆上的值类型取出,是拆箱。
int i = 123;
object obj = i;//Boxing
int j = (int) i;//Unboxing
异常处理
异常是程序运行中出现的,不总是因为代码逻辑有问题,而引起的错误。
异常会从第一次出现异常的函数中,一层一层往外抛,中间如果不处理,会一直抛到main函数。
C#中使用try……catch……finally……模式来处理异常
垃圾回收机制
C#中自动管理内存的机制。
C#的垃圾回收是不定时的,一旦某一带的内存满了就回收。
C#将内存分为3代,0代,1代,2代。0代最小,1代稍大,2代最大。
垃圾是按代回收的,第0代超预算之后就回收第0代的对象,而存活下来的对象就提升为第1代,依次类推,而往往经过多次0代的垃圾回收才能回收一次第1代,以此类推。
如果垃圾超过了2代容量,就会报错。
常用数据类型
String
StringBuilder
List
Dictionary
常用文件路径类
Path
Directory
File
FileStream
事件
在事件驱动型程序中,程序运行后系统会一直监听程序的状态。
当监听到事件后,会执行对应的注册方法。
非托管资源
非托管资源是不会自动释放的,需要手动释放。
例如文件读写完成之后,就需要手动释放。
var file=new FileStream(@D:\1.txt);
//中间对file写入了很多东西
//关闭对象,释放非托管资源
file.Close();
file.Dispose();
文件流
一个txt文件,计算机内部是以一串二进制数字来存储的。
对于这串二进制数字怎么来的,我们可以这样理解:
每个字符都有编码,比如a是97,b是98,c是99;
将十进制的字符编码串,转为二进制的,就是计算机中存储的二进制数字了。
例如:【abc】----【979899】----【11101111001110111011】
有了这样一串数字以后,我们把这串数字一个一个的读出来,就像流动一样,就是文件流。
索引器
索引器是一个带有参数的属性。
var a=int[3];
a[1]=0;//1就是索引器
在一个类中加入如下代码,就有了一个索引器。
public int this[int index]
{
get{return index;}
}
对象的序列化
对象的序列化可以使用BinaryFormat对象,使用方法如下。
1.在类名上方添加标记[Serializeable]
2.使用FileStream
3.使用序列化对象BinaryFormat
代码如下:
using(FileStream stream =new FileStream('1.dat',FileMode.Create,FileAccess.Write))
{
BinaryFormatter bf =new BinaryFormatter();
bf.Serialize(stream,obj1);
}
浅拷贝
Object类中的MemberwiseClone()方法是用来实现浅拷贝的。
浅拷贝的时候,原对象的值类型成员被复制成两份了,但是引用类型的成员仍然是一份。
应用程序路径
WinForm程序中获得应用程序路径比较好的方法是:
string exePath=Assembly.GetExecutingAssembly().Location;
静态
1.静态类继承自Object类,但不能实现任何接口。
2.静态类不能被继承。
3.静态与多态是互斥的概念。
结构与类的区别
1.结构中可以定义变量,但不可以赋初值。
2.结构中可以定义方法。
3.结构的构造函数中,必须为每个字段赋初值。
设计模式
设计模式是人在开发程序时创造的特定的代码组织结构,使用它,可以使代码更容易写和修改。
由一个静态的工厂类,根据需求生产用于某种任务的对象,来执行某种操作,这就是工厂模式。
工厂模式可以实现资源的按需分配,节省资源。
C#中的一些基础的更多相关文章
- 如何在ASP.NET Core中实现一个基础的身份认证
注:本文提到的代码示例下载地址> How to achieve a basic authorization in ASP.NET Core 如何在ASP.NET Core中实现一个基础的身份认证 ...
- [转]如何在ASP.NET Core中实现一个基础的身份认证
本文转自:http://www.cnblogs.com/onecodeonescript/p/6015512.html 注:本文提到的代码示例下载地址> How to achieve a bas ...
- 二维图形的矩阵变换(二)——WPF中的矩阵变换基础
原文:二维图形的矩阵变换(二)--WPF中的矩阵变换基础 在前文二维图形的矩阵变换(一)——基本概念中已经介绍过二维图像矩阵变换的一些基础知识,本文中主要介绍一下如何在WPF中进行矩阵变换. Matr ...
- ASP.NET中的C#基础知识
ASP.NET中的C#基础知识 说明:asp.net作为一种开发框架现在已经广为应用,其开发的基础除了前端的html.css.JavaScript等后端最重要的语言支持还是C#,下面将主要用到的基础知 ...
- Android中Canvas绘图基础详解(附源码下载) (转)
Android中Canvas绘图基础详解(附源码下载) 原文链接 http://blog.csdn.net/iispring/article/details/49770651 AndroidCa ...
- MySQL中索引的基础知识
本文是关于MySQL中索引的基础知识.主要讲了索引的意义与原理.创建与删除的操作.并未涉及到索引的数据结构.高性能策略等. 一.概述 1.索引的意义:用于提高数据库检索数据的效率,提高数据库性能. 数 ...
- 第87节:Java中的Bootstrap基础与SQL入门
第87节:Java中的Bootstrap基础与SQL入门 前言复习 什么是JQ? : write less do more 写更少的代码,做更多的事 找出所有兄弟: $("div" ...
- 在TypeScript中扩展JavaScript基础对象的功能
最近工作中用到,记录一下:假设我们需要一个功能,把一个数字比如10000输出为下面的字符串格式“10,000”,一般是写一个方法,那么我希望更方便一点,直接向Number类型添加一个格式化方法,比如叫 ...
- Spring中JdbcTemplate的基础用法
Spring中JdbcTemplate的基础用法 1.在DAO中使用JdbcTemplate 一般都是在DAO类中使用JdbcTimplate,在XML配置文件中配置好后,可以在DAO中注入即可. 在 ...
- 第90节:Java中的Linux基础
第90节:Java中的Linux基础 linux是装载虚拟机上面的: JDK依赖包: yum install glibc.i686 MYSQL依赖包: yum -y install libaio.so ...
随机推荐
- Navicat Win 和 Mac 视图类快捷键对比
Navicat 查询是根据用户需求从数据库提取可读格式的数据,Navicat 提供两个强大的工具与 SQL 查询工作:查询创建工具和查询编辑器,查询创建工具可视觉化地创建查询,查询编辑器可直接编辑查询 ...
- webstorm快捷键 webstorm keymap内置快捷键英文翻译、中英对照说明
20160114参考网络上的快捷键,整理自己常用的: 查找/代替shift+shift 快速搜索所有文件,简便ctrl+shift+N 通过文件名快速查找工程内的文件(必记)ctrl+shift+al ...
- MySQL技术内幕读书笔记(六)——索引与算法之全文索引
全文索引 概述 通过索引字段的前缀进行查找,B+树索引是支持的,利用B+树索引就可以进行快速查询. SELECT * FROM blog WHERE content like 'xxx%'; ...
- CentOS 6.5 x64相关安全,优化配置
一.安全 1.修改密码长度: [root@CentOS64 ~]# vi /etc/login.defs PASS_MAX_DAYS 99999 //用户的密密码最长使用天数 PASS_MIN_D ...
- STM32F105 PA9/OTG_FS_VBUS Issues
https://www.cnblogs.com/shangdawei/p/3264724.html F105 DFU模式下PA9引脚用来检测USB线缆,若电平在2.7~5v则认为插入usb设备(检测到 ...
- 获取硬盘序列号的Fortran程序
以前写了个获取硬盘序列号的fortran程序,但未经实证 program FortranDemo Use Kernel32 Implicit None Interface SUBROUTINE Get ...
- 【iCore4 双核心板_uC/OS-II】例程八:消息邮箱
一.实验说明: 消息邮箱是uC/OS-II中的另一种通信机制,可以使一个任务或者中断服务子程序向另一个任务发送一个指针型的变量.通常该指针指向一个包含了“消息”的特定数据结构. 二.实验截图: ...
- 从零开始搭建FAQ引擎--基于ES的字面匹配
从零开始搭建FAQ引擎--基于ES的字面匹配
- [Linux]Linux下signal function传参方式
https://stackoverflow.com/questions/6970224/providing-passing-argument-to-signal-handler This is a r ...
- What is a TensorFlow Session?
Sep 26, 2016 I've seen a lot of confusion over the rules of tf.Graph and tf.Session in TensorFlow. I ...