.net

.NET

比较C#中值类型和引用类型的区别

45 0

CLR支持两种类型:值类型和引用类型,看起来FCL的大多数类型是引用类型,但用的最多的还是值类型。引用类型总是从托管堆中分配,在用new操作符实例一个对象,返回对象内存地址存放在一个变量中。在使用引用类型时要了解其四个心理因素:       1.内存必须从托管堆中分配       2.堆上分配的每个对象都有一些额外成员,这些成员在使用前必须初始化。       3.对象中的其他字节总是设为零。       4.从托管堆分配对象时,可能强制执行一次垃圾回收。由此可见,引用类型若是滥用势必造成过载。再看值类型

.NET

介绍C#中的堆和栈

65 0

1、什么是堆?    堆是一块内存区域,在堆里可以分配大块的内存用于存储某类型的数据对象;  堆的特征:    1、堆里面的内存能够以任意顺序存入和移除;    2、不能显示地删除程序在堆里面保存的数据;    3、靠CLR的自动GC(垃圾收集器)判断并自动清除无主的堆对象,然后释放它;    4、被释放对象的内存可以被重用;2、什么是栈?    栈是一个内存数组,是一个后进先出的数据结构;  几种数据类型:    1、某些类型变量的值;    2、程序当前的执行环境;    3、传递给方法的参数;  几

C#中使用反射以及特性简化的实例代码
.NET

C#中使用反射以及特性简化的实例代码

40 0

假设现在有一个学生类(Student)123456789{ { name = Age { ; Address { ;如果需要判断某些字段(属性)是否为空,是否大于0,便有以下代码:1234567891011121314151617public static string ValidateStudent(Student student) { StringBuilder validateMessage = new StringBuilder();

C#中关于静态与非静态方法的区别介绍
.NET

C#中关于静态与非静态方法的区别介绍

47 0

静态方法和非静态方法的区别:  1.静态方法不需要类实例化就可以调用,反之非静态方法需要实例化后才能调用;  2.静态方法只能访问静态成员和方法,非静态方法都可以访问;  3.静态方法不能标记为override,导致派生类不能重写,但是可以访问;  4.静态成员是在第一次使用时进行初始化。非静态的成员是在创建对象的时候,从内存分配上来说静态是连续的,非静态在内存的存储上是离散的,因此静态方法和非静态方法,在调用速度上,静态方法速度一定会快点,因为非静态方法需要实例化,分配内存,但静态方法不用,但是这种速度

C#中匿名对象与var以及动态类型 dynamic的详解
.NET

C#中匿名对象与var以及动态类型 dynamic的详解

49 0

随着C#的发展,该语言内容不断丰富,开发变得更加方便快捷,C# 的锋利尽显无疑。C# 语言从诞生起就是强类型语言,这一性质到今天不曾改变,我想以后也不会变。既然是强类型语言,那编写任一程序均要求满足下面的基本条件:1、变量声明必须指明其类型2、变量类型明确后,其类型在Runtime亦不能改变代码如下:123456public class Student{ public string Name { get; set; } public int Age { get; set; }

.NET

比较C#和JAVA中面向对象语法的区别

58 0

面向对象是一种开发思想,最应该记住的一句话是万物皆对象。为了让程序更好的被理解和编写,把现实生活中描述事物的方式和思路融合进入,就成了面向对象的思想。把生活中的事物融合进程序中那么就需要描述,描述分为特征和行为两方面,而不同类别的对象特征和行为具有巨大的差异,为了更好的制定描述每一类事物的方式,那么提取来一个编程世界中的类的概念,等同于生活中的类型的概念,每一种事物都应该是有类型的。然后生活中的事物按不同的方面进行分类的话,可以划入不同的类别,所有编程中的类也是一个公说公有理,婆说婆有理的玩意,相当的抽象

.NET

C#/.NET易错的几点

35 0

1 及时释放资源 CLR托管环境扮演了垃圾回收的角色,所以你不需要显式释放已创建对象所占用的内存。但这不意味着你可以忽略所有的使用过的对象。许多对象封装了其 他类型的系统资源(例如,磁盘文件,数据连接,网络端口)。保持这些资源的使用状态会急剧的耗尽系统的资源,削弱性能并且最终导致程序出错。当你打开一个 文件、网络端口或者数据连接时,当你不再使用这些资源时,应该尽快显式释放这些资源。另外针对资源的操作,一般需要增加异常捕获处理(Try..Catch),这时别忘记在finally中进行资源释放,以确

.NET

介绍C#中的接口

53 0

对于很多初学者来说是个很容易迷糊的东西,使用起来很简单,无非就是定义接口,接口里面包含一些属性、索引器、事件和一些没有修饰符的方法,也没有方法的具体实现代码;然后在类中继承该接口,实现该接口中的所有属性、索引器、事件和方法的具体实现的代码(其实接口中只能这几个,一般我们用到的只有属性和方法所以在这里我就只跟大家分享其中的一种“方法”)。接口的使用就这么简单,只要照着去写代码就行了;但没有真正认识到接口的作用的人,都会感觉没有用接口的必要;感觉多此一举,在没真正认识到接口的作用时我也是这么认为的。