网站模板带后台下载,有搜索引擎作弊的网站,官方网站在哪里,网站名称去哪里注册文章目录对象的概念对象的创建和使用匿名类型和初始化器构造函数和析构函数构造函数析构函数范例参数传递博主写作不容易#xff0c;孩子需要您鼓励 万水千山总是情 , 先点个赞行不行
对象的概念
类是具有相同特征一类事物的抽象#xff0c;而对象是类的实例。 类和对象…
文章目录对象的概念对象的创建和使用匿名类型和初始化器构造函数和析构函数构造函数析构函数范例参数传递博主写作不容易孩子需要您鼓励 万水千山总是情 , 先点个赞行不行
对象的概念
类是具有相同特征一类事物的抽象而对象是类的实例。 类和对象有本质的区别类是从对象中抽取出来的一类对象的描述对象是类中的个体是一个具体的事物创建对象就是从抽象到具体的过程是将类的属性和行为实例化的过程。类与对象的关系可以比喻为设计手机和具体手机的关系类就像手机机型设计一样说明了手机所应该具备的所有属性和功能但是手机设计并不是手机对象就是跟据手机设计而制造出来的手机它具有手机的所有功能能打电话发短信。
对象的创建和使用
类是抽象的要使用类中非静态的成员就必须创建类的对象创建对象就是类的实例化过程。 C#使用new运算符创建对象。 语法格式如下类名 对象名 new 类名(参数列表);其中参数列表是可选的。 如创建Phone类的一个对象如下
class PhoneClass{public string brand;public string type;}class Program{static void Main(string[] args){PhoneClass Phone new PhoneClass();//创建Phone类的一个对象Phone.brand huawei;Phone.type 5G;Console.WriteLine(手机品牌是 Phone.brand);Console.WriteLine(手机种类是 Phone.type);Console.ReadKey();}}对象的使用是通过访问对象中的非静态成员来实现的。 访问对象中的非静态成员语法如下对象名.成员名如Phone类的一个对象的使用如下
class PhoneClass{public string brand;public string type;}class Program{static void Main(string[] args){PhoneClass Phone new PhoneClass();//创建Phone类的一个对象Phone.brand huawei;Phone.type 5G;Console.WriteLine(手机品牌是 Phone.brand);//Phone对象的使用Console.WriteLine(手机种类是 Phone.type);//Phone对象的使用Console.ReadKey();}}匿名类型和初始化器
匿名类型是C#3.0新增功能能简化对象的初始值设置。使用对象初始化创建类的对象并对其属性成员赋值。 举例如下
PhoneClass Phone new PhoneClass(){Phone.brand huawei};例如定义类Point有两个属性X,Y表示点的坐标
public class Point //定义Point类{ // 类的属性定义中setget可以简写为以下形式 public double X { get; set; }//定义属性X点的横坐标public double Y { get; set; }//定义属性Y点的纵坐标}使用对象初始化可以这样创建对象并对属性赋值
Point P new Point() { X 0.0, Y 0.0 }; //创建对象P并对XY赋值使用匿名类型可以定义内嵌的类型不需要显示的定义一个类型。假设没有定义Point类却要使用一个Point的对象可以使用对象初始化器不用指定类名。 例如
var p new { X 0.0, Y 0.0 }; //创建匿名类型p并使用对象初始化器赋值。构造函数和析构函数
对象和客观世界的事物一样从创建到消亡都有一个生命周期对象的创建和销毁是通过类的构造函数和析构函数来完成的。
构造函数
构造函数是类的特殊方法成员其名称和类名相同主要用来完成对象的初始化。 C#通过new创建对象的过程实际上就是调用类的构造函数的过程创建对象时调用构造函数对对象进行初始化。每个类都有构造函数如果没有定义系统也会提供一个默认的构造函数默认的构造函数一般不进行什么操作。在访问一个类的时候系统最先执行构造函数中的语句。
析构函数
析构函数是对象销毁前释放所占用的系统资源的类的成员。析构函数的名字是在类名前加一个“~”符号。析构函数不接受任何参数也不返回任何值。 例如
public class Point //定义Point类{ // 类的属性定义中setget可以简写为以下形式 Point(){//构造函数 //构造函数内容}~Point() //析构函数名{//析构函数 //析构函数内容}public double X { get; set; }//定义属性X点的横坐标public double Y { get; set; }//定义属性Y点的纵坐标}范例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace test
{class Program{static void Main(string[] args){Point p1 new Point();Console.WriteLine(无参数构造函数演示);Console.WriteLine(X p1.X);Console.WriteLine(Y p1.Y);Point p2 new Point(2.0,3.0);Console.WriteLine(有参数构造函数演示);Console.WriteLine(X p2.X);Console.WriteLine(Y p2.Y);Console.ReadKey();}}public class Point //定义Point类{ // 类的属性定义中setget可以简写为以下形式 public Point(){X 0.0; Y 2.0;//构造函数 //构造函数内容}public Point(double x,double y){X x; Y y;//构造函数 //构造函数内容}~Point() //析构函数名{Console.WriteLine(清理资源);//析构函数 //析构函数内容}public double X { get; set; }//定义属性X点的横坐标public double Y { get; set; }//定义属性Y点的纵坐标}
}运行结果
参数传递
C#的许多方法成员是有参数的定义方法时声明的参数是形式参数调用方法时要给形式参数传值传递方法的值是实参。C#有“值传递”和“引用传递”两种传递参数类型。值传递是C#默认的传递方式使用值传递方式时向形式参数传递实在参数的副本方法内发生的对形式参数的更改对实在参数本身没有影响就像文件的复印件一样无论如何修改复印件原件没有任何改变。如果希望所调用的方法能更改实在参数的值则必须使用ref或out关键字声明通过引用传递方式传递参数引用传递是把实在参数的地址传给形式参数形式参数和实在参数指向同一个存储单元对形式参数的改变就是对实在参数的改变。out与ref类似二者的区别是ref要求参数在传递之间必须初始化out则不要求初始化。
可参考文章 C#的两种类据类型值类型和引用类型 博主简介工业自动化上位机软件工程师、机器视觉算法工程师、运动控制算法工程师。目前从业于智能制造自动化行业。 博主邮箱2296776525qq.com 帮忙点个赞吧。哈哈。