C#学习笔记(二)

原创 2004年09月11日 16:10:00

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;

kafka学习笔记(2)

kafka的经典问题有这几个: 1.kafka节点之间如何备份? 2.kafka消息是否会丢失?为什么? 3.kafka最合理的配置是什么? 4.kafka的leader选举机制是什么? 5...
  • m0_37587447
  • m0_37587447
  • 2017年11月21日 15:37
  • 23

PCIe 学习笔记(二)

pci note 2 -v0.1 2014.11.18 *** draft  本文继续pci note 1, 介绍pci_create_root_bus函数, 内核版本为3.18-rc1 ...
  • scarecrow_byr
  • scarecrow_byr
  • 2014年12月01日 22:19
  • 1725

C#学习笔记-Winform 界面笔记

1,放入panel中的控件label,在更新数据时,panel会出现界面闪烁,将label更换为Textbox进行数据更新后,panel不闪烁2,label控件Text属性接收显示时会默认将“\t”替...
  • FairyTailQ
  • FairyTailQ
  • 2016年10月25日 11:41
  • 551

网络编程学习笔记整理(二)

摘录笔记 《TCP/IP高效编程 改善网络程序的44个技巧》socket的创建函数int socket (int domain,int type, int protocol)参数说明protocol需...
  • stecdeng
  • stecdeng
  • 2017年02月23日 14:47
  • 189

密码学学习笔记

1.流密码每次加密数据流的一位或一个字节,分组密码是将一个明文分组作为整体加密并且通常得到的是与明文等长的密文分组。 2.现在使用的大多数对称分组加密算法都是基于Feistel分组密码结构的。...
  • u011130578
  • u011130578
  • 2015年12月22日 13:57
  • 794

Unity3D之Mecanim动画系统学习笔记(三):Animation View

动画组件之间的关系 我们先看一张图: 这里我们可以看到,我们在GameObject之上绑定的Animator组件是控制模型进行动画播放的。 而其属性Controller则对应一个Anim...
  • cbbbc
  • cbbbc
  • 2017年02月19日 18:20
  • 318

Netty4学习笔记(一) 基础篇

在开始学习Netty之前,我们先对Unix系统常用的I/O模型进行介绍,然后对Java的I/O历史演进历史进行简单的说明。Linux 网络I/O模型简介Linux内核将所有外部设备都看做一个文件来操作...
  • FX_SKY
  • FX_SKY
  • 2016年03月15日 01:38
  • 6239

比特币源码学习笔记(二)

第二章 本章继上一章交易创建之后介绍比特币客户端序列化数据的过程。 比特币客户端所有的序列化函数均在serliaze.h中实现。其中,CDataStream类是数据序列化的核心结构。 CDataStr...
  • g2com
  • g2com
  • 2017年03月22日 07:57
  • 1292

《数据挖掘》学习笔记——认识数据(1)

一、数据属性定义:属性即一个数据的字段,在不同的领域有不同的等价叫法,例如:维度、特征、变量。 从具体事例角度看,数据的属性就像Excel表格的列,比如:...
  • qqmindyourwill
  • qqmindyourwill
  • 2016年05月19日 20:42
  • 346

【C#】C#基础学习笔记

【C#】C#基础学习笔记 由于之前用过几年C/C++,现只针对C#的差异或C/C++遗忘的知识点学习总结。 1、数据类型: 值类型:和C/C++类似。 指针类型:和C/C++类...
  • woaini454186694
  • woaini454186694
  • 2016年05月28日 18:48
  • 767
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#学习笔记(二)
举报原因:
原因补充:

(最多只允许输入30个字)