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();	// 为对象分配内存并赋值给变量

如果内存分配给一个引用类型,则对象创建表达式返回一个引用,指向在堆中被分配并初始化的对象实例

image-20220930101136659

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 本地变量

image-20220930105226137

1.2 类型推断和 var 关键字

var只是一个速记 表示任何可以总初始化语句的右边推断出的类型

使用var关键字的条件

  • 只能用于本地变量,不能用于字段
  • 只能在变量声明中包含初始化时使用
  • 一旦编译器推断出变量类型,他就固定且不能更改

1.3 嵌套块中的本地变量

image-20220930105937167

1.4 本地常量

一旦初始化,,他的值就不能改变

  • 常量声明必须初始化
  • 常量在声明后不能改变
  • 类型之前加const关键字
const string ip = "192.168.1.10";

2 参数

值参数

  • 在栈中为形参分配空间
  • 将实参的值复制给形参

image-20220930111146324

image-20220930111223162

image-20220930111230363

引用参数 ref

image-20220930111325519

image-20220930112807544

引用类型作为值参数和引用参数

image-20220930113018885

值传递

image-20220930112311659

引用传递

image-20220930112558059

总结: 值传递 是复制一份 包括引用类型 也是复制一份引用 ,当引用new的时候相当于从新创建了一个对象

而ref 只是把 栈区中的 引用起了一个别名(形参) 所以引用都是同一个 ,怎么改都一样

3 输出参数 out

image-20220930113244824

image-20220930113343419

4 参数数组

参数类型类型都需要严格按照实参数对于形参传值,参数数组则不同,他允许零个或多个实参对应一个特殊的形参

  • 在一个参数列表中只能有一个参数数组
  • 如果有 他必须是列表中最后一个
  • 有参数数组表示的所有参数都必须具有相同的类型

声明一个参数数组必须做的事:

  • 在数据类型前面使用params修饰符
  • 在数据类型后加[]
void ListInts(params int[] inVals){}

调用

int[] intArray = {1,2,3,4};
ListInts(intArray);

image-20220930144641489

image-20220930150026356

5 命名参数

image-20220930150236964

6 可选参数

image-20220930212814289

image-20220930212833701

posted @ 2022-10-29 00:02  LD_Dragon_sky  阅读(21)  评论(0编辑  收藏  举报