随笔分类 - 【C#】
C#
摘要:
.Net有四个判等函数?不少人看到这个标题,会对此感到怀疑。事实上确是如此,.Net提供了ReferenceEquals、静态Equals,具体类型的Equals以及==操作符这四个判等函数。但是这四个函数之间有细微的关系,改变其中一个函数的实现会影响到其他函数的操作结果。
阅读全文
.Net有四个判等函数?不少人看到这个标题,会对此感到怀疑。事实上确是如此,.Net提供了ReferenceEquals、静态Equals,具体类型的Equals以及==操作符这四个判等函数。但是这四个函数之间有细微的关系,改变其中一个函数的实现会影响到其他函数的操作结果。
阅读全文
摘要:
大家在看了这标题后,肯定会觉的,为什么要确保“0”是有效的,这一点主要是跟值类型的内存分配有关,值类型有默认的构造函数,这是没法避免的,因此值类型变量中的成员在初始化的时候所出现的细微问题
阅读全文
大家在看了这标题后,肯定会觉的,为什么要确保“0”是有效的,这一点主要是跟值类型的内存分配有关,值类型有默认的构造函数,这是没法避免的,因此值类型变量中的成员在初始化的时候所出现的细微问题
阅读全文
摘要:
首先来解释一下标题,原标题为《Prefer Immutable Atomic Value Type》,因此对于标题的理解要分成三部分,第一部分为不可改变,第二部分为原子,最后一个部分为值类型。最后一部分,我不多说了,限制此章适用的范围。对于什么是不可改变类型,这里的意思是指此类型的变量一旦产生其成员就不能发生变化。至于原子类型,我以前在CSDN也经常提到,例如保证操作的原子性之类的语句,那么一个原子类型,其的子成员为不可分割的一部分,不能单独被操作。
阅读全文
首先来解释一下标题,原标题为《Prefer Immutable Atomic Value Type》,因此对于标题的理解要分成三部分,第一部分为不可改变,第二部分为原子,最后一个部分为值类型。最后一部分,我不多说了,限制此章适用的范围。对于什么是不可改变类型,这里的意思是指此类型的变量一旦产生其成员就不能发生变化。至于原子类型,我以前在CSDN也经常提到,例如保证操作的原子性之类的语句,那么一个原子类型,其的子成员为不可分割的一部分,不能单独被操作。
阅读全文
摘要:
在C#中有两种类型的数据,一种是值类型数据,一种是引用类型数据。在编码的时候区分这两种类型数据,可以避免一些细小的编码错误。首先说说什么类型是值类型,例如:int、float、bool之类的基础类型,以及用struct定义的类型,如:DateTime。除此外,如string,数组,以及用class定义的类型等都是引用类型。对于C#来说,很难罗列出所有类型进行一一分别,这需要自己在编码过程中进行分析总结。
阅读全文
在C#中有两种类型的数据,一种是值类型数据,一种是引用类型数据。在编码的时候区分这两种类型数据,可以避免一些细小的编码错误。首先说说什么类型是值类型,例如:int、float、bool之类的基础类型,以及用struct定义的类型,如:DateTime。除此外,如string,数组,以及用class定义的类型等都是引用类型。对于C#来说,很难罗列出所有类型进行一一分别,这需要自己在编码过程中进行分析总结。
阅读全文
摘要:
提供一个有意义的ToString函数,对于进行调试或者发布此类都是很有用,因为这种做法是最简便的方法,相对于访问类的成员属性然后再组合字符串。不过大家写代码的时候,包括我在内,往往忽略了去提供一个有意义的ToString函数,这点看来要在今后的编码中进行改善。
阅读全文
提供一个有意义的ToString函数,对于进行调试或者发布此类都是很有用,因为这种做法是最简便的方法,相对于访问类的成员属性然后再组合字符串。不过大家写代码的时候,包括我在内,往往忽略了去提供一个有意义的ToString函数,这点看来要在今后的编码中进行改善。
阅读全文
摘要:
在编码的时候,有时候需要添加一些DEBUG信息,来为了方便调试程序,但是到了真正发布的时候,又不希望把这些信息进行编译发布。那么在以前C或者C++编码的时候,用IF/ENDIF来定义程序块实现这个功能,而此方法在C#中可以继续沿用。
阅读全文
在编码的时候,有时候需要添加一些DEBUG信息,来为了方便调试程序,但是到了真正发布的时候,又不希望把这些信息进行编译发布。那么在以前C或者C++编码的时候,用IF/ENDIF来定义程序块实现这个功能,而此方法在C#中可以继续沿用。
阅读全文
摘要:
除了如上两点限制外,在用as操作符来进行类型转换的时候,有个细微的问题。在前面所说的,用as来进行类型转换的时候,所要转换的对象类型必须是目标类型或者转换目标类型的派生类型,那么这样就有个问题,即用as操作符来进行类型转换的时候无法转换成正确的类型,也就是说本来应该转换成子类型,却转换成了父类型。但是我并不认为这是个严重问题,因为在用as操作符来进行类型转换的时候,如何选择目标类型在编码的时候已经很明确了,即用父类型作为目标类型,那么类型转换的目的就是转换成父类型对象进行操作;反之亦然。
阅读全文
除了如上两点限制外,在用as操作符来进行类型转换的时候,有个细微的问题。在前面所说的,用as来进行类型转换的时候,所要转换的对象类型必须是目标类型或者转换目标类型的派生类型,那么这样就有个问题,即用as操作符来进行类型转换的时候无法转换成正确的类型,也就是说本来应该转换成子类型,却转换成了父类型。但是我并不认为这是个严重问题,因为在用as操作符来进行类型转换的时候,如何选择目标类型在编码的时候已经很明确了,即用父类型作为目标类型,那么类型转换的目的就是转换成父类型对象进行操作;反之亦然。
阅读全文
摘要:
在C#中定义常量的方式有两种,一种叫做静态常量(Compile-time constant),另一种叫做动态常量(Runtime constant)。前者用“const”来定义,后者用“readonly”来定义。
阅读全文
在C#中定义常量的方式有两种,一种叫做静态常量(Compile-time constant),另一种叫做动态常量(Runtime constant)。前者用“const”来定义,后者用“readonly”来定义。
阅读全文
摘要:
在程序中,难免要访问某个对象的私有成员。那么以前实现这类功能的方法有两种,第一种方法最简单,就是把成员访问符从“private”改为“public”即可;而另一个就是提供公有的成员访问函数来进行访问。那么现在用C#编写程序,就不再需要采用前面所说的两种方法了,而直接使用属性来完成。
阅读全文
在程序中,难免要访问某个对象的私有成员。那么以前实现这类功能的方法有两种,第一种方法最简单,就是把成员访问符从“private”改为“public”即可;而另一个就是提供公有的成员访问函数来进行访问。那么现在用C#编写程序,就不再需要采用前面所说的两种方法了,而直接使用属性来完成。
阅读全文

浙公网安备 33010602011771号