C#学习笔记(二)

2004/09/11早上办公室
接上页
4.4 调用方法
每种方法必须要有返回值,没有返回值的,返回类型VOID,参数可选
例子:
double a(float n)
{
 return n*n;
}
调用方法的办法是:使用其名称使用必要的变量将返回的值保存
public static void Main()
{
 double d = a(3.0f);
 Console.WriteLine(d);
}
static double a(float n)
{
 return n*n;//FLOAT之间的运算结果是DOUBLE
}
不在创建对象的情况下调用方法使用STATIC
变量如何传递给方法取决于他们是数值类型还是引用类型,如果一个方法的变量是一个数值类型表示变量的复制被传递给函数,引用类型被传递的内容是真实对象的本身,在方法中的任何改变都会对对象有影响
C#中有两个办法实现引用类型REF和OUT
用REF做标志表示对他的值所做的修改都会长期的保留

4.5 处理程序错误
如果程序不处理异常回导致程序终止
他们不必在程序发生错误的地方处理异常,
当传递回来的返回值不可用的时候就使用他们比如数组的越界,标志一个错误可以使用throw语句抛出异常
如果处于TRY的程序执行出现错误,就仅执行CATCH的程序快,如果什么也没有发生就跳过程序,用户不能跳过TYR也不能从离开的位置返回继续运行程序

4.5.1 finally
try 程序块可以带有一个与之相关的FINALLY的程序快,是在CATCH之句中任何异常都被扑捉后执行,使用break,continue,return,goto,将控制从程序快中转出来都是错误的,

4.5.2 异常类
都是继承System.Exception,
SystemException
AccessException

4.5.3 检查和未检查

4.6控制台I/O
Console.In 标准输入
Console.Out 标准输出
Console.Error 标准错误

4.6.1 控制台输入
Console.In有两个方法可以输入。Read()返回单字符作为INT,如果找不到字符就返回-1,ReadLine()返回包含下一行输入的字符串,如果找不到输入行就返回NSULL
4.6.2 控制台输出
Console.Write 有两个相匹配的方法输出,WriteLine带有换行符
Write和WriteLine有许多重载的方法,可以不同类型的数据
4.7 名字空间
名字空间提供了对类分组的方法,相关的类可以在名字空间中编制在一起,可以在一些大型的应用中提供帮助,有两个方法可以访问这些类
第一,使用完全的受限名称,第二,用USING指令
也可以使用别名
using BankAccount = Finance.Bank.Account
using InsuranceAccount = Finance.InsuranceCo.Account

第五章 面向对象的编程

5.1 结构
在C#中结构仅仅是复合的数据类型,由其他的许多数据类型组成,用STRUCT的关键字组成
struct Point
{
 Public int x;
 Public int y;
}

组成结构的变量叫做结果的成员也叫域,可以用简单的点表示法来访问
Point p1;
p1.x = 10;
p1.y = 10;
Console.WriteLine("{0},{1}",p1.x,p1.y);
可以嵌入对结构的引用
struct Inner
{
 public int a;
 public int b;
}
struct Outer
{
 public Inner i;
 public int x;
}
Outer o;
o.i.a = 3;
o.x = 4;

5.2 枚举
枚举是一组被命名的整数常量组成的数据类型

5.3 类
类是OO编程的核心
OO编程的优点:
黑箱开发和测试,OO编程使得用户在类中连遍数据和功能,访问的限制可以使的一些用户得到他要的功能,其他功能艰险在内部使用,正常的完成这些功能之后可以创建软件的黑箱
可以重复的使用
强健性

5.3.1 常量和只读成员
public class Account
{
 public readonly string sortCode;

 public Account(string code)
 {
  sortCode = code;
 }
}
readonly修饰符,规定成员有自己的值,他的值只能社顶一次,之后变成只读
5.3.2 this引用
public class Point
{
 int x;
 int y;
 public void SetX(int x)
 {
  this.x = x;
 }
}

5.3.3 构造程序和析构函数
构造函数构造类类型的对象时被调用的通常用于初始化
有如下特征,跟类有相同的名字
没有返回的类型
没有返回值
5.3.4 析构函数
析构函数在程序中多的不多
public class Test
{
 private int n;
 public Test()
 {
  n = 0;
 }
 ~Test()
 {
  //tidy up
 }
}
5.3.5 静态成员
每个静态成员属于类,不管实例是否存在他们都应该是存在的
5.4 继承
当类从父类继承时,他也继承了父类的成员,这就允许我们构件和扩展现在的类
publci class CheckAccount : Account
{

}
c#仅允许单一继承。当用户需要从多个基类中继承是要使用接口,不能实现多重继承
也可以洋基类引用他
CheckAccount s1 = new CheckAccount();
Account a1 = s1;

5.4.1 访问基类成员
可以用BASE关键字来访问基类的成员

5.4.2 受保护的访问
protected 他限制对定义类本身的访问和对任何从其中派生的类访问
5.4.3 对.NET装配件的内部访问

5.5对象类
Object类是所有类的基类,有些方法都是所有类型都要继承的,可以提供很实用的功能
ToString()
Equals();
GetHashCode();
GetType();

public Person
{
 String name;
 public override string Tostring() //覆盖基类的方法
 {
  
 }
}
5.5.3 接口
interface IPrintable
{
 void Print();
}
接口的定义象类定义,但是只定义方法,不实现他们,只能包含方法,属性,以及事件和索引
从类继承和接口继承这两者之间的区别是必须实现在接口定义的所有成员
使用接口可以实现类似多重继承的功能,虽然用户只能从一个类中继承,但是可以从任意多个接口总继承
接口更重要的用法是描述行为
5.5.4 属性
由于数据完整性的隐含问题使类用户可以公共访问数据成员,这是不好的编程习惯,OO用获取和设置的方法访问数据成员
public class Test
{
 private int val;
 public void setval(int v)
 {
  val = v;
 }
 public void getval()
 {
  return val;
 }
}
C#可以通过构件语言中的获取和设置来访问数据成员,就是属性的形式
public class Test
{
 private int val;
 public int val
 {
  get
  {
   return val;
  }
  set
  {
   val = value;
  }
 }
}
使用属性
Test test1 = new Test();
test1.val = 10;
int i = t.val;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值