博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[C#]C#补习——类与方法
阅读量:6281 次
发布时间:2019-06-22

本文共 1952 字,大约阅读时间需要 6 分钟。

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

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

1、方法相关

2、类相关

 

一、方法相关

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

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

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

但是有几点需要注意:

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

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

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

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

 

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

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

命名参数:

1
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#中允许出现嵌套类,如下代码:

1
2
3
4
5
6
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引入的作用域将仅限于这个命名空间下,如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
using 
System;
 
namespace 
A
{
    
using 
System.Text;
    
public 
class 
FOO
    
{
    
}
}
public 
class 
SOO
{
}

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

本文转自kyo-yo博客园博客,原文链接:http://www.cnblogs.com/kyo-yo/archive/2010/12/31/CSharp-Tutorial-About-Class-And-Method.html,如需转载请自行联系原作者

你可能感兴趣的文章
《Exchange Server 2010 SP1/SP2管理实践》——2.4 部署外部网络环境
查看>>
Firefox 是 Pwn2own 2014 上攻陷次数最多的浏览器
查看>>
阿里感悟(十八)- 应届生Review
查看>>
《计算广告:互联网商业变现的市场与技术》一第一部分 在线广告市场与背景...
查看>>
话说模式匹配(5) for表达式中的模式匹配
查看>>
《锋利的SQL(第2版)》——1.7 常用函数
查看>>
《Arduino家居安全系统构建实战》——1.5 介绍用于机器学习的F
查看>>
jquery中hover()的用法。简单粗暴
查看>>
线程管理(六)等待线程的终结
查看>>
spring boot集成mongodb最简单版
查看>>
DELL EqualLogic PS存储数据恢复全过程整理
查看>>
《Node.js入门经典》一2.3 安装模块
查看>>
《Java 开发从入门到精通》—— 2.5 技术解惑
查看>>
Linux 性能诊断 perf使用指南
查看>>
实操分享:看看小白我如何第一次搭建阿里云windows服务器(Tomcat+Mysql)
查看>>
Sphinx 配置文件说明
查看>>
数据结构实践——顺序表应用
查看>>
python2.7 之centos7 安装 pip, Scrapy
查看>>
机智云开源框架初始化顺序
查看>>
Spark修炼之道(进阶篇)——Spark入门到精通:第五节 Spark编程模型(二)
查看>>