IT学习者 | 文章大全 | 技术文档 | 桌面壁纸 | 实用查询 | 网络电台 | 成语 | 歇后语 | 网址 | 下载 | 周公解梦 | 生日密码 | 电视剧365 | Flash
 您现在的位置: IT学习者 >> 文章大全 >> 网络编程 >> ASP.NET

C#速成(Quick C#)

【 作者:bigqiang翻译    来源:http://www.fazhuan.com/  更新时间:2004-7-27 | 字体:


-------------------
装箱和拆箱操作(Boxing/Unboxing)
-------------------

C#的装箱思想是全新的。上面提到过所有的数据类型,不论内置或用户自定义,全都从命名空间System的一个基类object派生出来。因此把基本的或者原始类型转换成object类型被称做装箱,反之,这种方式的逆操作被称为拆箱。

示例:

class Test
{
   static void Main()
   {
      int myInt = 12;
      object obj = myInt ;       // 装箱
      int myInt2 = (int) obj;    // 拆箱
   }
}

示例展示了装箱和拆箱操作。一个整型值转换成object类型,然后又转换回整型。当一个值类型的变量需要转换成引用类型时,一个object的箱子会被分配容纳这个值的空间,这个值会被复制进这个箱子。拆箱与此相反,一个object箱子中的数据被转换成它的原始值类型时,这个值将被从箱中复制到适当的存储位置。

-------------------
方法参数
-------------------

C#中有三种类型的参数:

值参数/输入型参数
引用型参数/输入输出型参数
Out参数

如果你有COM接口和它的参数类型的概念,你会很容易理解C#参数类型。

值参数/输入型参数
值概念与C++相同。所要传递的值会被复制到一个位置上并被传递给函数。

示例:

SetDay(5);
...
void SetDay(int day)
{
    ....
}


引用型参数/输入输出参数
C#中的引用参数既不是C++中的指针也不是引用操作符(&)来传递的。C#的引用型参数减少了出错的可能。引用型参数也被称作输入输出参数,因为你传递了一个引用地址,因此你可以从函数中传递一个输入值并且可以获得一个输出值。

你不能把一个未经初始化的引用型参数传递给函数。C#用ref这个关键字来声明引用型参数。当你传递一个变量给函数要求的引用参数时必须使用一个ref关键字说明。

示例:

    int a= 5;
    FunctionA(ref a);        // 要用ref声明变量,否则你会得到
                             // 一个编译错误
    Console.WriteLine(a);    // 指向地址的值为20

    void FunctionA(ref int Val)
    {
        int x= Val;
        Val = x* 4;
    }


Out参数
Out型参数仅仅从函数当中返回一个值。不要求有输入值。C#用关键字out来描声明这个参数

示例:

    int Val;
    GetNodeValue(Val);

    bool GetNodeValue(out int Val)
    {
        Val = value;
        return true;
    }



可变数量的参数和数组
数组在C#当中是通过关键字params来描述传递的。作为数组类型的变量,你能传递任意数量的元素。从下面示例中你可以理解的更好。

示例:

    void Func(params int[] array)
    {
        Console.WriteLine("number of elements {0}",array.Length);
    }

    Func();                      // prints 0
    Func(5);                     // prints 1
    Func(7,9);                   // prints 2
    Func(new int[] {3,8,10});    // prints 3
    int[] array = new int[8] {1,3,4,5,5,6,7,5};
    Func(array);                 // prints 8




-------------------
运算符和表达式
-------------------
运算符和表达式概念与C++完全相同。但是一些新的有用的运算符被填加了进来。我将在这里讨论其中的某些部分。

is 运算符
is 运算符被用于检查操作数的类型是否相同或者是否可以转换。is 运算符在多态环境下特别有用。它有两个操作数,运算结果是一个布尔型。看这个示例:

void function(object param)
{
    if(param is ClassA)
        //do something
    else if(param is MyStruct)
        //do something
    }
}

as 运算符
as 运算符检查操作数的类型是否可被转换或者是否相等(这些 as通过 is 运算符来完成。如果结果是可转换的,则结果将被转换或者被装箱,成object(关于as运算符进行装箱成目标类型的操作请看前面的装箱/拆箱操作)。如果不可转换或者装箱,则返回值是null。瞧一瞧下面的例子我们会更好地理解这个概念。

Shape shp = new Shape();
Vehicle veh = shp as Vehicle;   // 结果是null, 类型不可转换

Circle cir = new Circle();
Shape shp = cir;
Circle cir2 = shp as Circle;    //会被转换

object[] objects = new object[2];
objects[0] = "Aisha";
object[1] = new Shape();

string str;
for(int i=0; i&< objects.Length; i++)
{
    str = objects[i] as string;
    if(str == null)
        Console.WriteLine("can not be converted");
    else
        Console.WriteLine("{0}",str);
}

输出:
Aisha
can not be converted


文章共6页,当前在第4页 9 7 [1] [2] [3] [4] [5] [6] 8 :
相 关 文 章
相 关 软 件

音乐
画心 放生 天亮了 牡丹江 那滋味 擦肩而过 放手去爱 北京欢迎你 依然在一起 吻得太逼真 牵手的右前方 坐上火车去拉萨 如果爱能早些说出来
心碎 稻香 从新爱 别碰我 魔杰座 红楼梦中 为你而活 一定要爱你 等爱的玫瑰 失落非主流 越单纯越幸福 最后一次的温柔 孤独的时候可以抱你
光荣 火花 下雨天 小酒窝 樱花草 为你写诗 无可取代 无情的温柔 寂寞才说爱 忘不掉的伤 爱上你是个错 陪你一起看草原 地球人都知道我爱你
假如 相思 女儿红 有缘人 舍不得 我的答铃 如何是好 外滩十八号 我们的纪念 摇滚怎么了 和寂寞说分手 爱上你是我的错 爱情里没有谁对谁错
加入收藏留言建议自助友情链接普通友情链接站长的Blog
版权所有   COPYRIGHT 2002-2008 ★IT学习者★ ALL RIGHTS RESERVED.