2 类成员 访问修饰符 方法 参数 out ref params 命名参数 可选参数
目录
类=
1类的概述
类是一种活动的数据结构
- 数据成员
- 函数成员
一个 c# 类可以有任意数目的成员和函数成员,成员可以是9种可能的成员类型的任意组合
数据成员存储数据 | 函数成员执行代码 |
---|---|
字段 | 方法 |
常量 | 属性 |
构造函数 | |
析构函数 | |
运算符 | |
索引器 | |
事件 |
2类成员
字段和方法是重要的类成员类型,字段是数据成员,方法是函数成员
2.1 字段
字段是隶属于变量
class Program
{
int a; // 字段
}
与c和c++ 不同,c#在类外不能声明全局变量(字段或变量) 所有的字段都属于类型,而且必须在类型声明内部声明
1 显示和隐示字段初始化
如果没有初始化语句,字段的值会编译器设置默认值,默认值由字段的类型决定,总结起来 每种类型的默认值为0 bool是false 引用类型是 null
例如下面 前两个为隐示初始化,后两个为显示初始化
class MyClass
{
int F1; // 初始化为0 --值类型
string F2; // 初始化为null -- 引用类型
int F3 = 25;
string F4 = "abcd";
}
2.2 为数据分配内存
使用new方法
Delaler theDealer; // 声明引用变量
theDealer = new Delaler(); // 为对象分配内存并赋值给变量
如果内存分配给一个引用类型,则对象创建表达式返回一个引用,指向在堆中被分配并初始化的对象实例
3 访问修饰符
5种成员控制如下,目前描述前两种
- 私有的 private
- 公有的 public
- 受保护的 protected
- 内部的 internal
- 受保护内部的 protected internal
私有访问和公有访问
私有成员只能从声明他的类内部访问,其他的类不能看见或访问他们
- 私有访问是默认的额访问级别,如果一个成员没有加访问修饰符,那他就是私有成员
- 还可以使用private修饰符讲一个成员声明为私有
private int MyInt; // 显示声明为私有
int Myint2; // 隐示声明为私有
从类中访问私有方法
class MyTest
{
private int Height = 175; // 显示初始化
public void GetHeight(){
return Height;
}
}
MyTest test =new MyTest();
int height = test.GetHeight();
方法=
1 方法
1.1 本地变量
1.2 类型推断和 var 关键字
var只是一个速记 表示任何可以总初始化语句的右边推断出的类型
使用var关键字的条件
- 只能用于本地变量,不能用于字段
- 只能在变量声明中包含初始化时使用
- 一旦编译器推断出变量类型,他就固定且不能更改
1.3 嵌套块中的本地变量
1.4 本地常量
一旦初始化,,他的值就不能改变
- 常量声明必须初始化
- 常量在声明后不能改变
- 类型之前加const关键字
const string ip = "192.168.1.10";
2 参数
值参数
- 在栈中为形参分配空间
- 将实参的值复制给形参
引用参数 ref
引用类型作为值参数和引用参数
值传递
引用传递
总结: 值传递 是复制一份 包括引用类型 也是复制一份引用 ,当引用new的时候相当于从新创建了一个对象
而ref 只是把 栈区中的 引用起了一个别名(形参) 所以引用都是同一个 ,怎么改都一样
3 输出参数 out
4 参数数组
参数类型类型都需要严格按照实参数对于形参传值,参数数组则不同,他允许零个或多个实参对应一个特殊的形参
- 在一个参数列表中只能有一个参数数组
- 如果有 他必须是列表中最后一个
- 有参数数组表示的所有参数都必须具有相同的类型
声明一个参数数组必须做的事:
- 在数据类型前面使用params修饰符
- 在数据类型后加[]
void ListInts(params int[] inVals){}
调用
int[] intArray = {1,2,3,4};
ListInts(intArray);
5 命名参数
6 可选参数
吾虽浪迹,却未迷失本心