博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#知识点总结【1】
阅读量:4600 次
发布时间:2019-06-09

本文共 3448 字,大约阅读时间需要 11 分钟。

值类型和引用类型

从概念上看,其区别是值类型直接存储其值,引用类型存储值的引用。

在内存当中的状态,值类型存储在堆栈(zhan)中,而引用类型存储在托管堆上。

int i = 20;            int j = i;

上面的例子中 内存中会存储两个值,一个是i 一个是j;

Vector x, y;            x = new Vector();            x.Value = 30;            y = x;            Console.WriteLine(y.Value);            y.Value = 50;            Console.WriteLine(x.Value);

这段代码 内存中只存储了一个引用 Vector 而x和y 是其内部变量,所以对x的更改赋值给y,y值的也会跟着变化。

另外引用对象可以设置为null,这样可以表示不引用任何对象;

 

CTS类型

(通用类型系统)

预定义值类型有

{整型:sbyte,shory,int,long,byte,ushort,uint,ulong}

{浮点:float,double}

{高精度浮点:decimal}

{真假值:bool}

{字符:char}

预定义的引用类型

{object,string}

 

枚举

枚举是用户定义的一组整数类型集合。

public enum TimeOfDay    {        Morning = 0,        Afternoon = 1,        Evening = 3,    }

有三个有点,1.易于维护,2.代码更清晰,3.易于输入。

 

C#预处理指令

编译器是否编译此段代码的 预编译指令是 使用 #define 配合 #if #elif #else 和 #endif 使用

#define DEBAGBusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication{    class Program    {        static void Main(string[] args)        {            #if DEBAGA            Console.WriteLine("不编译");            #elif DEBAGB            Console.WriteLine("编译");            #endif        }    }}

此时程序就不会编译 DEBAGA 代码段 只输出编译

这样做的好处在于将来如果不想测试代码了  可以使用 #undef 讲编译代码注销掉

#define 和 #undef 都是写在 cs 页面的顶部 才可以使用 ;

#waring #error  是作为一条标记信息;

#region #endregion 注释;

#line 改变编译器在显示错误信息后的行号;

#pragma 可以抑制或者还原制定的编译警告;

 

类和结构

类和结构内部构造相同但是区别 在于在内存当中存储的位置不同

1.类是引用类型,存储在内存的堆中;

2.结构是值类型,存储在内存的栈中;

3.结构不支持继承。

4.结构不能有无参数构造函数

类的用途比结构的用途广,但是 较小的数据类型使用可以用结构来提高性能;

 

数据成员有 字段、常量、事件;

静态可以使用关键字static;常量关键字 const;只读字段关键字 readonly;

函数成员有 方法、属性、构造函数、终结器(finalizer)、运算符、索引器;

  • 方法

方法的基本用法很简单;需要注意的特别的几个点

1.ref 关键字 是将默认传递的值类型换成 引用方式,在方法内部修改 带有ref 的参数都会改变原始对象的值;

2.out 关键字 可以不定义默认值传递参数,也是以引用方式传递 在方法内部的更改都会影响其变化;

3.重载 就是方法的名称相同但是方法的参数 数量不同或类型不同

  • 终结器

终结器类似于构造函数,但是不同于构造函数,和finalize的作用相同写法不同

///         /// 终结器        ///         ~MyClass(){            //要清理的对象        }        ///         /// 重写清理对象        ///         protected override void Finalize(){            try             {                            //自定义清理对象            }            finally            {                base.Finalize();            }        }

 

匿名类型

匿名类型就是 关键字 var ;

关键字和new一起使用是可以创建匿名类型;

缺点:编译器为var 伪造了一个对象的类型,所以利用反射是得不到该对象的类型的;

 

结构

类中定义了封装了对象,存储在堆中,在生存周期上有很大的灵活性,但是这也降低了性能;

所以产生了结构,用于保存那些没有必要占用太多资源的较小数据;

 

弱引用

对于那些很大却不长访问的类,就可以使用弱引用,弱引用可以创建和使用,在垃圾回收运行是就会讲对象回收;

因为若引用可能随时被回收,所以要使用WeakReference 类来创建;

static void Main()        {            WeakReference  mathreference=new WeakReference(new Users());            Users user;            if(mathreference.IsAlive)            {                user=mathreference.Target as Users;            }        }

 

部分类

当多个程序员编辑一个类的时候就可以使用这种办法来编辑一个类;

把一个类可以分成多个部分;

使用关键字 partial;

partial class MyClass    {        public void GetOne()        {                }    }    partial class MyClass    {        public void GetTwo()        {                }    }    ///     /// 编译后    ///     partial class MyClass    {        public void GetOne()        {                }        public void GetTwo()        {                }    }

 

Object类

所有.NET 的类 的派生自 System.Object 。

GetHashCode(); 当对象在数据字典结构中,就可以使用这个方法;

GetType();返回对象的更多信息,包括类型,方法,属性等;

MemberwiseClone();复制对象,但是只是浅表复制,对对象内部的引用不不复制对象只是复制引用;

 

扩展方法

扩展方法是对一个类的另一个的扩展;

扩展方法是静态的;

public static class MyClass    {        public static void Add(this YouClass yc;decimal num)        {            yc.Value += num;        }    }

转载于:https://www.cnblogs.com/objctccc/p/6120028.html

你可能感兴趣的文章
POJ2231 Moo Volume 递推 C语言
查看>>
struts2类型转换的具体流程
查看>>
Hdu 1203 I NEED A OFFER!
查看>>
php文件上传类
查看>>
CF219D Choosing Capital for Treeland
查看>>
luogu P3809 【模板】后缀排序
查看>>
Red Gate 破解
查看>>
JVM 调优工具
查看>>
SCTF 2014 pwn题目分析
查看>>
集合以及特殊集合
查看>>
USACO 2.2 Runaround Numbers
查看>>
利用 force index优化sql语句性能
查看>>
Matlab画图-非常具体,非常全面
查看>>
365. Water and Jug Problem
查看>>
SQL数据库数据检索top和distinct
查看>>
平衡搜索树--红黑树 RBTree
查看>>
sqlite驱动下载
查看>>
让IE6/IE7/IE8浏览器支持CSS3属性
查看>>
队列实现霍夫曼树
查看>>
【Java】图片高质量缩放类
查看>>