C#語言基礎

来源:互联网 发布:文本编辑器 vim mac 编辑:程序博客网 时间:2024/05/21 18:42
 
语言:其实就是由数据类型、流程控制和各种类库组成的一个集合。不同的语言在其功能上会有一些差异。
       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
     {
         staticvoid 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
     {
         staticvoid 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;
 
原创粉丝点击