c#面向对象(三)
创始人
2025-05-31 02:52:48
0

函数定义和使用函数

小理解

怎么样能被定义为函数呢,其实也就是把一些重复的操作,专门放在一个地方/代码块里面,需要用到的时候在调用就可以了,特定类型的函数称为方法。

函数的好处呢,提高代码的可读性,函数可以创建多用途的代码

简单使用

static void Write(){
Console.WriteLine("这是write函数");
}static void Main(string[] args){Program.Write();Console.ReadKey();
}
//定义函数的时候必须适用圆括号
//函数名:PascalCase

返回值

void就是一个,当函数返回一个值时。不能使用void。使用return结束函数的执行,把返回值给调用的

表达式体方法使用

static returntype functionname ()=>

参数

形参是函数定义的一部分,而实参则有调用代码传递给函数。

(paramtype paramname)这种形式

调用参数时,必须是提供的参数和函数定义的参数完全匹配

关于参数数组,只能指定一个,这个参数必须位于函数定义当中参数的最后一个,可以允许使用个数不定参数来调用。params type[] paramsname。

在使用参数的时候,是把一个值参数传递给一个函数所使用的变量,在函数中对此变量的任何修改都不影响函数调用中指定的参数。

ref参数,和out参数,在前面方法中提到了

把未赋值的变量用作ref参数时非法的,但可以使用未赋值的变量out参数,在函数中使用out参数,把它看作未赋值的

元组

从函数返回多个值用怎样的方法呢,out参数,结构,数组?如果需要用代码来创建,初始化,引用和读写,就应该考虑元组了。

var numbers={1,2,3,4,5}

变量的作用域

考虑局部作用域和全局作用域的含义,在一个代码块内部,外部为什么不能调用。

局部作用域可以有相同的名称,不会相互干涉


Main()函数

main函数作为c#应用程序的入口点,执行这个函数就是执行应用程序,也就是main函数结束,整个应用程序也就结束。


结构函数

struct CustomerName{
public string firstName;
}

委托

委托是一种储存函数引用的类型。委托的声明类似于函数,但不带函数体,要是用delegate关键字。委托的声明包含一个返回值和参数列表。

嵌套类和匿名类

//嵌套类
//在c#中可以将一个类的定义在另一个类的内部
//外面的类叫外部类,内部的类叫嵌套类
//外部类和内部类之间可以相互访问
//new 外部类.内部类()可以创建内部类的对象
//非静态类访问需要创建类对象
//静态成员可以之间访问或通过类名访问,
//外部类
class Ab{
//内部类
class Ba{
}
}
internal class Program{static void Main(string[] args){OuterClass.InnerClass innerclass=new OuterClass.InnerClass();innerclass.Show();OuterClass outerClass=new OuterClass();outerClass.Print();Console.ReadKey();}}//外部类class OuterClass{public string name = "OuterClass";//如果静态成员,如果非静态成员public void Print() {Console.WriteLine($"{name}");//Console.WriteLine($"{InnerClass.name}");Console.WriteLine($"{new InnerClass().name}");}//内部类public class InnerClass{public  string name= "InnerClass";//如果静态成员,如果非静态成员public void Show() {Console.WriteLine($"{name}");// Console.WriteLine($"{OuterClass.name}");Console.WriteLine($"{new OuterClass().name}");}}}
//匿名类
//如果某个类的实例对象只会使用一次,可以使用匿名类的方式创建这个对象。
//不需要定义类,我们就可以创建一个对象
//这样的类一般用于存储一组只读数据
var p=new {Name="zhangsan",Age=18};

this和static使用

 #region
//this
//定义:this关键字主要指的是调用者本身,调用者当前对象
//区分成员字段和局部变量
//调用其他构造函数
class Student{
public int id;
public string name;
public Student(){
Console.WriteLine("无参构造函数")
}//无参构造函数
//this可以指向当前对象的另一个构造函数
public Student(int id,string name):this(){
//this代表当前对象,也是赋值的对象student
this.id=id;
this.name=name;
Console.WriteLine("有参构造函数")
}
}Student student = null;student = new Student(100,"zhangsan");#endregion
//static
//如果使用static修饰函数该函数就是静态函数,如果不修饰就是非静态函数
//静态函数可以直接使用类名调用,非静态函数必须使用对象调用class MyMath{public static double GetAtea(double x){return x * x*3.14;}}
//静态函数可以直接使用类名调用Console.WriteLine(MyMath.GetAtea(10));Console.ReadKey();
//静态函数:静态函数中使用的静态字段
//静态字段:静态字段的初始化最好放在静态构造函数中
//静态属性:静态字段的属性一定是静态属性
//静态构造函数:主要用于静态字段的初始化,类加载的时候自动调用,不需使用new关键字调用
//静态类:所有的成员都是静态的类称之为静态类

运算符重载

//运算符重载指的是给特定的运算符指定新的运算规则class Vector{private int x;private int y; private int z;//运算符重载,当运算符重载的是条件运算符的时候不允许成对出现public static bool operator==(Vector a, Vector b){return a.x==b.x&&a.y==b.y&&a.z==b.z;}public static bool operator !=(Vector a, Vector b){return a.x != b.x || a.y != b.y || a.z != b.z;}//运算符+public static Vector operator +(Vector a, Vector b){return new Vector(a.x + b.x , a.y + b.y , a.z + b.z);}public Vector(){}public Vector(int x, int y, int z){this.x = x;this.y = y;this.z = z;}public void GetArea(){Console.WriteLine($"x={x},y={y},z={z}");}}static void Main(string[] args){Vector v = new Vector(1,2,3);Vector v1 = new Vector(3,2,1);Vector v2 = new Vector(3,2,1);v.GetArea();v1.GetArea();Console.WriteLine(v == v1);//falseConsole.WriteLine(v != v1);//trueConsole.WriteLine(v1==v2);//false//为什么呢,比较的是地址,所以用运算符重载,改成比较的是值Vector v5=new Vector(7,7,7);Vector v6= new Vector(8,8,8);Vector v4=v5+v6;v4.GetArea();Console.ReadKey ();

相关内容

热门资讯

常州法院2025年前三季度调解... 调解结案16474件、调解成功率24.08%——这是2025年前三季度常州法院交出的司法成绩单。通过...
安徽省政协研究室副主任陈鑫已任... 据铜陵市政府官网消息,11月20日上午,市委举行理论学习中心组学习会议,邀请省委社会工作部副部长高维...
原创 联... 据光明网报道,11月19日,在联合国大会的讨论中,日本企图争取成为安理会常任理事国的梦想再次破灭,令...
南部关于全县规范法律咨询服务机... 一、专项行动时间 自即日起至2025年12月。 二、举报受理范围 社会各界反映强烈的某些法律咨询服务...
“男子持刀入室盗窃”视频引发关... 近日,一段疑似“小偷”入室盗窃被业主家中监控拍下的视频在网上引发关注。11月21日晚,“翠屏公安”微...
绝不允许日本军国主义幽灵复活!... 2025年11月7日,日本首相高市早苗宣称,如果中国大陆对台湾出动军舰并使用武力,可能会构成“存亡危...
【解决】AI法律助手荣获202... 2025全球数字经济大会启幕,搭建国际数字合作高端平台 经国务院批准,由北京市人民政府、国家互联网信...
嘉兴男子与妻争吵,突然将行李箱... 近日,浙江嘉兴一对夫妻因琐事发生争吵,丈夫突然将装满衣物的行李箱从6楼扔到楼下,引发关注。11月22...
三地107家律所齐聚丰台,京津... 11月22日,京津冀律师驿站举办“党建业务深度融合 促进行业规范发展”主题活动,发布“百千万行动计划...