语言:其实就是由数据类型、流程控制和各种类库组成的一个集合。不同的语言在其功能上会有一些差异。
C#是一个基于.NET平台的面向对象的语言。
一、数据类型:
1. C#的数据类型主要分为:
u 值类型。
u 引用类型。
1) 值类型:它的内存空间是分配在栈区的,其实际保存的是一种数值。它包括:除了JAVA中的基本类型之外,还增加了decimal(128位浮点型)数据类型、无符的数据类型。布尔型的关键字也由JAVA的boolean缩写为bool。像JAVA中的String类型,在JAVA中既可以是引用类型也可以当做基本类型来使用,在C#中也继续这样使用,只是将S改为小写。
2) 引用类型:和JAVA中的引用类型差不多,包括:数组,类,接口…..。
引用类型在内存的栈区有一块空间,是存储的一个引用(可以说是地址。),而它的实际内容是在内存的堆区(也就是实体)。
其实我们上面提到的这些数据类型并不是C#中的,而是.NET Framework类库中定义的。所以我们也常说C#中的数据类型都是预定义的数据类型。
C#的类型体系:
C#中引用类型继承至Object类。值类型继承至ValueType类,而ValueType类又继承至Object类,所以我们也说C#中的所有数据类型都继承至Object类。
C#中的变量声名和JAVA中都是一样的,C#中常量的声名是用关键字const来实现的。
如:
const int maxMark=100;
2. 类型转换:
在C#中数据类型转换也同样分为:同种数据类型转换和不同种数据类型转换。
1) 同种数据类型转换:
同种类型专换可分为:隐式转换和强制转换。
隐式转换说的是在小型的数据类型向大型的数据类型转换时(因不会失去精度),系统会自动的对它进行转换。
强制转换是指在大型数据类型向小型数据类型转换时(因有可能失去精度),所以我们会用到强制转换。如下片段:
long a=10;
int b=(int)a;
2) 不同种数据类型转换:
不同类型的转换是用方法来实现的。.NET Framework为我们提供了parse(string s)方法和Convert类的to<type>( )方法,都可以进行类型转换。
二、C#运算符和表达式:
C#中,运算符和表达式和JAVA中没什么区别。除了= = ,JAVA中我们知道==在比较String 和引用类型时,是比较的地址。C#中在这里有一点小小的改变,它在比较string时是比较的值。如下:
using
System;
namespace
ConsoleApplication1
{
class Class1
{
static void Main(string[] args)
{
string a="abcd";
char[] ch={'a','b','c','d'};
string b=new string(ch);
if (a==b)
{
Console.WriteLine("OK");
}
else{
Console.WriteLine("NO");
}
}
}
}
很名显上例中的a和b的地址是不同的。但此程序将输出OK,所以==是比较的值。
三、流程控制:
选择语句:包括if else 和switch()…case….。这两个语句的用法都和JAVA中的用法是一样的。而只有switch()语句,JAVA中switch语句中要求一个整型表达式(有int,byte,char),不允许有string,而在C#中我们的switch语句中,可以用string。并且C#中的break语句是不可缺的(除了有retrun和退出外)。如下:
using
System;
namespace
ConsoleApplication1
{
class Class1
{
static void Main(string[] args)
{
string a="abcd";
switch(a){
case "a":
Console.WriteLine("aaaa");
break;
case "abcd":
Console.WriteLine("abcd");
break;
case "bcde":
Console.WriteLine("bcde");
break;
default :
Console.WriteLine("default");
break;
}
}
}
}
此代码将会输出“abcd”,此代码中的break语句缺一不可。
C#中的循環結構除了foreach結構外,其它的都和JAVA中的循環結構類似。
foreach循环是用于遍历整个集合或数组,每次在集合中取出一个元素,它不能改变集合的内容。
foreach的语法如下:
foreach(DataType 变量名称 in 集合) //DataType 为集合中元素的数据类型,in 是指从集合中取出一个元素给变量
{
//语句块;
}
四、裝箱与拆箱
裝箱:是由編譯器自動將一個原始類型轉換為引用類型的一個過程。(在JAVA中是要我們自己手動進行轉換的。)如下:
int a=10;
Object b=a;
這在C#中是完全可以的。
拆箱:那么就是裝箱的反向進程。但編譯器并不會進行隱式拆箱,這就需要我們進行顯式的拆箱。如下:
int a=10;
Object b=a;
int c=(int)b;