你的位置:首页 > ASP.net教程

[ASP.net教程]C#入门中的必备语法(一)


   首先我们要知道C#语言是一种面向对象的语言由C和C++演变而来,它依赖于.NET Framework。.NET Framework可以提供一个强大的代码库供其调用。之所以说C#语言依赖于.NET Framework是由于C#源代码只有经过编译器(指VS或VCE)的编译之后,变成CIL(Common Intermediate Language)通用中间语言。其实通常是我们常见的.exe或者.dll文件也叫作程序集。当我们运行.exe文件时,程序集将被CLR—公共语言运行时(Common Language Runtime)翻译为CPU的指令然后交由CPU完成。所以我们用C#只能编写托管环境下的代码(要受CLR控制)。学过JAVA的人可以把CLR理解为JAVA虚拟机,主要负责管理内存、处理安全性、垃圾回收、以及跨语言调试等。

   学习一门编程语言我们还要了解它的基本语法:关于语法大家只要有一本系统介绍C#语言的书大致都差不多。

1、关于显示转换和隐式转换

  隐式转换:类型A到B在所有情况下都可以进行,编译器自主进行转换。那么什么时候执行隐式转换呢?-只要类型A的取值范围完全包含在取值B中就可以执行隐式转换。

 

1       char str = 'a';2       ushort newStr;3       newStr = str;4       Console.WriteLine("str {0}", str);5       Console.WriteLine("newStr {0}", newStr);

隐式转换

 

输出结果:str  a

              newStr 97

此时编译器自动执行了隐式转换。ushort和char类型的取值范围都在0~65535之间,所以可以执行类型转换。

显式转换:微软在程序中为我们提供了显示转换相关的方法(Convert)。但要注意溢出问题,如果实际需要转换的A类型值超过了B类型的取值范围就会发生溢出,但系统默认不会报错,但是会造成数据丢失。可以通过chack方法进行检查。

      short str = 285;      byte newStr;      newStr =Convert.ToByte(str);      Console.WriteLine("str {0}", str);      Console.WriteLine("newStr {0}", newStr);

显式转换

会报: 值对于无符号的字节太大或太小。

2  函数中的参数问题

首先注意函数调用时实参和形参要类型匹配。

c#允许指定一个(也只能是一个)特定的参数,必须是参数的最后一个用params修饰,称为参数数组。

static int sumVals(params int[] vals){   int sum=0;   foreach(int val in vals)    {      sum+=val;    }    return sum;}

求和函数

引用参数 ref 和 out

ref的特点是有进有出,即在传递参数之前就已经对它进行赋值,在传入方法体时,是将该数的地址传了进来,如果对其进行相应的赋值操作,直接改的是地址里的值,所以,当该方法执行完,该数的值也就跟着改变了。而out与ref的唯一区别是,在方法接收参数后,对它进行初始化(如果没有初始化,将会报错的),其余的用法都和ref一样。

ref 关键字使参数按引用传递,当执行调用方法时,在方法中对参数的任何更改都将反映在该变量中。学过C++可以类比引用。

class Ref{  static void refExample(ref int i)  {    i = 20;  }  static void Main()  {    int val = 0;    refExample(ref val);     Console.WriteLine(val);//此时打印出20  }}

引用参数

 

 static void Main(string[] args)    {      int i ;      Add( out i);      Console.WriteLine(i);//结果输出11    }    static void Add(out int i)    {      i=10; //如果没有这个赋值,将会报错的      i = i + 1;    }

ref和out不同