一、数据与转换及其他

一、在思想意识方面要区分开值类型与引用类型的区别。

很多时候我定义一个类型,然后new一下,就是代表实例化了。这个new一下就是引用类型了。

值类型与引用类型的区别来源于他们的复制方式,值类型的数据总是被值复制,而引用类型总是被引用复制。前者会在新的内存位置上将复制的数据存储起来,而后者总是在新的内存位置上将复制数据的内存地址存储起来。

有个疑问:如何判断预定义数据类型为值类型还是引用类型。比如通过何种方法才能知道int是值类型还是引用类型?

二、在思想意识方面要知道类型是可以相互转换的。

数据类型是可以相互转换的,但不代表可以自由的转换。查看系统预定义的转换操作符。将一个数据类型转换为另一个数据类型而没有发生任何数据的丢失,也就是兼容的情况下,系统可以隐式转换,否则,需要显示转换。另外,还可以控制转换时发生的异常,决定是否抛出异常还是自动分割原始类型的数据来适应新类型。

三、实现与细节方面:

1、null与void及可控修饰符

     null值只能赋给引用类型、指针类型和可空值类型。若是赋给引用类型,则说明变量不知向任何一个位置。变量被赋予null值表示变量已经被赋值,与没有赋值的变量不同。如果将null赋给string,并不等同于它赋给一个空字符串“”;null意味着无任何值,而“”意味着变量有一个值:一个空字符串。(依据猜测:无论是赋予变量null值还是“”,都会为其分配内存。但是null值的内存里面并没有存储指针,也就是不知道是什么内容。而为“”的内存里则为一个值,这个值为空。不过还是说不清,日后再想)。编程逻辑可以将一个为null的表示传真号码的变量faxNumber解释成“传真号码未知”,而“”则表示“没有传真号码”。

    void在c#中仅表示没有数据类型,本质上并不是一个数据类型。

    由于null值不能赋给值类型,但是如果值类型的变量在值本来就缺失的时候该怎么办呢?可以用“?”来声明一个特殊变量。比如int? count=null;在数据库编程中尤为有用,在数据表中,经常出现值类型的列运行为空,如果这个时候读取这些列的值并付给一个变量,那么就会出错。这是可以用可控修饰符来解决这个问题。即当值类型缺失值的时候,可以用可控修饰符来声明一个变量。
2、变量的声明与赋值

     普通方法略。太熟悉了因为。

     var关键词声明隐士类型的局部变量。格式 var variableName=变量的初始化语句。如 var text=system.console.readline();系统会自动根据初始化语句所赋的值来推断text的数据类型。但尽量不要用。

     c#可以在同一条语句中进行多个赋值操作。如int a,b; a=b=10;

 

四、附加

1、编程应尽量避免硬编码(hardcoding),所谓硬编码就是将一个值直接放到源代码中进行编码。这对于日后的代码维护工作极其不便。代码的编写实际上是逻辑思维的整理过程,并不涉及到具体的数值,但必须考虑数据类型。在进行声明变量之后,只需留有入口和出口便于数值的输入与输出,其他的都不应该涉及到具体的数值。

2、需要明白静态方法与可实例化方法的含义。静态方法就是类名.方法名调用即可,动态方法需要事先实例化一个对象,然后以变量名作为前缀调用其方法。虽然目前并不知道为什么会这样,但需要树立一个观念,如果在静态方法中没有找到,那么就去实例方法中去寻找。

 

       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值