值类型与引用类型

值类型包括:【基本数据类型,如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#中的一些基础的更多相关文章

  1. 如何在ASP.NET Core中实现一个基础的身份认证

    注:本文提到的代码示例下载地址> How to achieve a basic authorization in ASP.NET Core 如何在ASP.NET Core中实现一个基础的身份认证 ...

  2. [转]如何在ASP.NET Core中实现一个基础的身份认证

    本文转自:http://www.cnblogs.com/onecodeonescript/p/6015512.html 注:本文提到的代码示例下载地址> How to achieve a bas ...

  3. 二维图形的矩阵变换(二)——WPF中的矩阵变换基础

    原文:二维图形的矩阵变换(二)--WPF中的矩阵变换基础 在前文二维图形的矩阵变换(一)——基本概念中已经介绍过二维图像矩阵变换的一些基础知识,本文中主要介绍一下如何在WPF中进行矩阵变换. Matr ...

  4. ASP.NET中的C#基础知识

    ASP.NET中的C#基础知识 说明:asp.net作为一种开发框架现在已经广为应用,其开发的基础除了前端的html.css.JavaScript等后端最重要的语言支持还是C#,下面将主要用到的基础知 ...

  5. Android中Canvas绘图基础详解(附源码下载) (转)

    Android中Canvas绘图基础详解(附源码下载) 原文链接  http://blog.csdn.net/iispring/article/details/49770651   AndroidCa ...

  6. MySQL中索引的基础知识

    本文是关于MySQL中索引的基础知识.主要讲了索引的意义与原理.创建与删除的操作.并未涉及到索引的数据结构.高性能策略等. 一.概述 1.索引的意义:用于提高数据库检索数据的效率,提高数据库性能. 数 ...

  7. 第87节:Java中的Bootstrap基础与SQL入门

    第87节:Java中的Bootstrap基础与SQL入门 前言复习 什么是JQ? : write less do more 写更少的代码,做更多的事 找出所有兄弟: $("div" ...

  8. 在TypeScript中扩展JavaScript基础对象的功能

    最近工作中用到,记录一下:假设我们需要一个功能,把一个数字比如10000输出为下面的字符串格式“10,000”,一般是写一个方法,那么我希望更方便一点,直接向Number类型添加一个格式化方法,比如叫 ...

  9. Spring中JdbcTemplate的基础用法

    Spring中JdbcTemplate的基础用法 1.在DAO中使用JdbcTemplate 一般都是在DAO类中使用JdbcTimplate,在XML配置文件中配置好后,可以在DAO中注入即可. 在 ...

  10. 第90节:Java中的Linux基础

    第90节:Java中的Linux基础 linux是装载虚拟机上面的: JDK依赖包: yum install glibc.i686 MYSQL依赖包: yum -y install libaio.so ...

随机推荐

  1. MySQL技术内幕读书笔记(二)——InnoDB存储引擎

    目录 InnoDB存储引擎 InnoDB存储架构 Checkpoint技术 Master Thread 工作方式 InnoDB关键特性(放一下,感觉看后面,再看总结吧) InnoDB存储引擎 Inno ...

  2. PEP 492 -- Coroutines with async and await syntax 翻译

    因为工作中慢慢开始用python的协程,所以想更好的理解一下实现方式,故翻译此文 原文中把词汇表放到最后,但是我个人觉得放在最开始比较好,这样可以增加当你看原文时的理解程度 词汇表 原生协程函数 Na ...

  3. 干货 | Elasticsearch 集群健康值红色终极解决方案【转】

    题记 Elasticsearch当清理缓存( echo 3 > /proc/sys/vm/drop_caches )的时候,出现 如下集群健康值:red,红色预警状态,同时部分分片都成为灰色.  ...

  4. [转]MySQL中timestamp数据类型的特点

    原文地址:https://www.imooc.com/article/16158 在使用MySQL数据库时有很多常见的误解,其中使用int类型来保存日期数据会提高数据读取的效率就是比较常见的一个误解. ...

  5. WPF ViewModelLocator

    在WPF中应用ViewModelLocator <Window x:Class="Demo.Views.MainWindow" ... xmlns:prism="h ...

  6. 31Spring的一些想法

    看一遍以前的自己写的博客,记录下自己的一些想法,Spring分为两块:IOC和AOP.IOC就是在applicatcontext.xml中配置<<bean......>>这种. ...

  7. mysql与mycat搭建实现集群与读写分离

    数据库性能优化普遍采用集群方式,oracle集群软硬件投入昂贵,今天花了一天时间搭建基于mysql的集群环境. 主要思路 简单说,实现mysql主备复制-->利用mycat实现负载均衡. 比较了 ...

  8. Android 最流行的吸顶效果的实现及代码

    开始逐渐领略到ItemDecoration的美~ 今天让我 使用 ItemDecoration 来完成 可推动的悬浮导航栏的效果,最终实现的效果如下图: 具体实现步骤如下: 根据我前面的文章所讲的Re ...

  9. mvc 根据模板导出excel,直接导出文件流

    1.c# /// <summary> /// 导出员工 /// </summary> /// <returns></returns> [HttpGet] ...

  10. PowerDesigner 15进行逆向工程生成数据库图表时,注释的comment的生成,解决PowerDesigner逆向工程没有列注释

    使用PowerDesigner默认配置逆向工程是没有注释(name列为英文,comment列是空的),这样的不方便查看字段具体是什么意义,将注释一同导出,方便查看字段具体的意义,如下图 注释列导出步骤 ...