[C#]C#补习——类与方法

       补习完一些基础的C#之后,今天开始补习C#的重要组成部分类与方法相关知识。

以下是本文所要介绍的内容:

1、方法相关

2、类相关

 

一、方法相关

     方法一般是由返回类型、方法名和参数组成,随着.NET版本的不断提升,方法也衍生出了许多特性(不知道这边称之为特性算不算对),这些特性是个双刃剑,有好处也有坏处,所以只有开发者对其进行了解才能很好的运用,下面列举了几个我认为需要注意的地方

1、参数数组,在C#中,允许在方法参数中添加params关键字来表示参数数量是可变的,如下代码:

public void Test(string name,params string[] args)
{
	//do something
}

但是有几点需要注意:

1)如果有多个参数,参数数组则必须是在方法参数的最后一个

2)对于方法参数必须要有1个的情况下,建议将其分离出来,不要合并到参数数组中,否则很容易引发错误,如下代码:

public void Test(string name,params string[] args)
{
	//do something
}

如果上面的代码中name不分离出来而放在数组参数的中,那么在调用的时候很可能就会忘记传入,而编译器也不会报错。

 

2、可选参数及命名参数,在.NET4中,新增了一个可选参数的特性,如下代码:

public void Test(string name,int age=16)
{
}

命名参数:

Test("测试",age:15);

这种可选参数很好解决了以前需要至少2个重载才能完成方法重载,而命名参数则解决了在传参的过程中无需再独立定义一个变量来保存并传值,但是有点需要注意:

1)可选参数和命名参数这2种技术混合使用的时候会出现代码阅读的困难,因为你无法一眼无法知道这个调用的到底是哪个方法。

2)如果有一个可选参数方法和一个无可选参数的方法签名都一样,编译器会调用屋可选参数的方法。

 

3、分部方法,在.NET2.0推出了一个新的关键字partial,主要用于类与方法,增加了这个关键字后可以将一个类分割到多个代码文件中,这样的好处就在于可以分隔出自动生成的代码与人工代码(当然还有其他),如:FOO.designer.cs和FOO.cs。

而分部方法的好处就在于,在一个分部类中可以只有签名无需事先,而在另外一个分布类中实现,如果没有实现则不会有任何问题,在IL里也不会有相应的签名信息,增加了灵活性。

而是如果要使用分部方法需要注意以下3点:

1)分部方法的返回值必须是void。

2)分部方法的参数中不能有out参数,但可以使用ref。

3)分部方法必须包含在分部类中。

 

二、类相关

      类相关主要有2个作用域需要注意:

1、嵌套类作用域,在C#中允许出现嵌套类,如下代码:

public class A
{
     private class B
     {
     }
}

什么时候需要使用嵌套类呢?,就是如果A类中需要有某些代码需要以面向对象的形式展现,而又不想被除调用类以外的类调用到就可以使用嵌套类,需要注意的是嵌套类最好不要使用public访问符,因为这样无任何意义

而这边要谈的不是嵌套类的好坏,而是要注意使用了嵌套类后的作用域问题:

1)嵌套类B可以访问A类所有成员,而A类无法访问B类的私有成员,只能用过B类的实例来访问公开的成员

2)嵌套类B中的this指向的是B类的实例。

3)嵌套类B如果想访问A类实例的话则只能通过传递参数来实现。

 

2、using引用作用域,这个放在类中来进行记录不知道合适不合适,但是还是记录下来吧,主要就是我们常规的using引入都是在代码的顶部,命名空间的外部引入命名空间,其作用于当前类文件,而如果在namespace中使用using引入则using引入的作用域将仅限于这个命名空间下,如下代码:

using System;

namespace A
{
    using System.Text;
    public class FOO 
    {
    }
}
public class SOO
{
}

如上代码,在顶部引入了System,这个System将作用于整个类文件,而在A命名空间下引入了System.Text,其仅仅作用于A命名空间。

posted @ 2010-12-31 13:39  kyo-yo  阅读(1217)  评论(0编辑  收藏