C#学习笔记第二篇之标识符、关键字、基本数据类型

C#学习笔记第二篇之标识符、关键字、基本数据类型

本篇主要讲述C#中的变量声明规则,关键字,以及基本数据类型,这里都会和c/c++以及JAVA比较着学习。

变量命名和声明规则

  • C#中的变量命名必须采用首字母小写+后缀单词首字母大写的形式如(caseButtonID),原因是要与公共语言规范(CLS)兼容。
  • 不要使用匈牙利命名(什么是匈牙利命名法),C++中会很常见这种方式,特别在MFC中更是常见,如HWND,g_XXX,pfnXXXX,等等,就是属性+类型+名字的形式。
  • C#中声明的变量必须赋初值,否者编译就不会通过,而C++中变量没有赋初值也可以使用,只是该值不确定,编译器也不报错,另外static变量和global变量未赋初值会自动赋值,在JAVA中类中的声明的成员变量也是可以不用赋值的,会自动赋一个默认初始的值,但一般都会通过构造函数来初始化这些值。

关键字

//C#中共有77个关键字
abstract 抽象类的声明标识   
as       ?
base      ?
bool
break
byte
case
catch
char
checked  ?
class
const
continue
decimal
default
delegate  委托
do 
double
else
enum
event    事件
explicit  ?
extern    ?
false
finally
fixed      ?
float
for
foreach
goto
if
implicit   ?
in          ?
int
interface
internal   ?
is          ?
lock         ?
long
namespace 
new
null
object
operator 
out         ?
override     ?
params        ?
private
protected
public
readonly     ?
ref          ?
return       
sbyte         ?
sealed        ?
short
sizeof
stackalloc    ?
static
string
struct  
switch
this
throw
true
try
typeof       ?
uint
ulong
unchecked
unsafe        ?
ushort         
using
virtual
void
volatile      ?
while
带?是新添加的关键字或者不确定,或者很少用的关键字。
具体内容稍后补上。

 基本类型

  • 新添加一个decimal货币值,暂时还没有用过稍后补充用法。
  • bool值跟java的boolean值都是只对应true或者false而不能用0或者1替代。
  • 譬如int基本类型的取值范围同其他语言一样,都是-2的n次方到2的n次方-1,为什么负数的值多一个?因为-0的补码正好是那个最小的负数值的补码,所以正好可以表示最小的那个负数值。不懂的可以讲-0的补码写一写,就明白了。

扩展(null 与"" ,string.empty的区别)

  • string str = null 没有创建内存空间,str中存放的是空引用指针;

    string str = "" 创建了内存空间,str中存放的是指向堆中的指针。

     

    简单地说:

    string str ="";

    给你一张白纸;

    string str = null;

    连白纸也没有。

     

    string.Empty就相当于"" 

    一般用于字符串的初始化 

    比如: 

    string a; 

    Console.WriteLine(a);//这里会报错,因为没有初始化

     

    而下面不会报错: 

    string a=string.Empty; 

    Console.WriteLine(a); 

     

    或者用于比较: 

    if(a=="") 

    if(a==string.Empty) 

    上面两句是一样的效果。

     

    string.Empty不分配存储空间

    ""分配一个长度为空的存储空间  

    所以一般用string.Empty

  • C#判断字符串为空用if(str!=string.Empty)  
              java中常用if(!"XXXX".isEmpty())或者if(str.equals(""))来判断是否为空值

String与string的区别

c# string映射为.net Framework的String 
如果用string,编译器会把它编译成String,所以如果直接用String就可以让编译器少做一点点工作 
如果使用c#,建议使用string,比较符合规范    
string始终代表 System.String(1.x) 或 ::System.String(2.0) ,String只有在前面有using System;的时候并且当前命名空间中没有名为String的类型(class、struct、delegate、enum)的时候才代表System.String 
string是关键字,String不是,也就是说string不能作为类、结构、枚举、字段、变量、方法、属性的名称,而String可以 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值