• C#中类的使用介绍


    在对类访问使用时,常用到的有访问类的成员、方法。

    实例化

    在对类进行访问时,需要将类进行实例化。并产生一个对象。可以使用关键字new来实现。

    由于类是引用类型,创建类的实例后,在栈分配对象的引用地址,指向堆内存,存储对象的值。

    虽然对象的实例字段是值类型,也是在堆上创建存储空间存储的,栈上对象指向堆存储的变量。

    类名 对象名  = new 类名();
    
    • 1
    • 类名。指类的名字,比如书本、汽车等
    • 对象名。指实例化类后的对象名字,比如实例化汽车类后,创建一个具体的对象。可以是奔驰汽车,宝马汽车等。

    类成员

    访问

    在对类进行实例化后,调用对象的名

    对象名.类的成员
    
    • 1
    //创建Book类
    class Book
    {
    	public int Id{get;set;}
    	public string Name{get;set;}
    	public double Price{get;set;}
    	public static string Author{get;set;}//创建类的静态成员
    	
    	public void PrintMsg()//不返回数值,使用void
    	{
    		Console.WriteLine("图书编号:"+Id);
    		Console.WriteLine("图书名称:"+Name);
    		Console.WriteLine("图书价格:"+Price);
    	}
    }
    
    //在项目主程序调用Book类。
    class Program
    {
    	static void Main(string[] args)
    	{
    		Book.Author = "SomeBody"  //访问类静态成员时,不需要实例化对象,可直接访问
    		Book bk = new Book();//Book属于类,bk属于对象名
    		//为bk对象的属性赋值
    		bk.Id = 1;
    		bk.Name = "论演员的自我修养";
    		bk.Price = 6.66;
    		bk.PrinfMsg();
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    赋值

    为对象属性赋值时,可通过类内部的构造方法,如果类内部没有构造方法,可通过直接赋值。

    直接赋值型

    根据上面的例子,当类中没有构造方法,并且字段修饰符为public,可通过实例化对象访问类的成员,并对其赋值。

    代码案例参考类成员访问。

    构造方法型

    在使用构造方法前,先简单介绍下构造方法。

    语法规则

    访问修饰符  类名 (参数列表)
    {
        语句块;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 没有返回值,可以带参数,也可不带参数

    • 声明类对象时,系统自动调用构造函数,在构造函数中不要对类的实例进行初始化以外的事情,也不能被显式地调用。

    • 构造函数可以重载, 从而提供初始化类对象的不同方法

    • 静态构造函数,用static修饰,用于初始化静态变量,一个类只允有一个构造函数

    • 构造函数可以使用public、protected、private修饰符,一般常用public,方便对类成员赋值或重载等

    • 如果将访问修饰符设置成private类型的,则无法创建该类的对象。

    • 构造方法的名称必须是类名

      class User
      {
          //创建构造函数,作为类的输入项,用于内部方法的调用。
      	public User(string name,string password,string tel)
      	{
      		this.Name = name;
      		this.Password = password;
      		this.Tel = tel;
      	}
      	public string Name {get;set;}
      	public string Password{get;set;}
      	public string Tel{get;set;}
      	
      	public void PrintMsg()
      	{
              //this 
      		Console.WriteLine("用户名:"+this.Name);
      		Console.WriteLine("用户名:"+this.Password);
      		Console.WriteLine("用户名:"+this.Tel);
      	}
      }
      
      //在Main方法中实例化user类对象,并调用其方法
      class Program
      {
          static void Main(string[] args)
          {
              //实例化user类,创建对象,根据类的构造函数,传入三个参数。
              User user = new User("小明",123,17726531990);
              user.PrintMsg();
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32

    方法

    指类中创建的方法,其实上面说的构造函数也是方法。

    方法调用

    实例化对象,然后直接调用方法,调用时需要注意方法是否有传入参数和返回值。

    //创建类
    Class SumUtils
    {
    	public int Sum(int a,int b)
    	{
    		return a + b;
    	}
    	public Sayhi()
        {
            Console.WriteLine("Hello World");
        }
    }
    
    //实例化类,并调用相关方法。
    class Program
    {
    	static void Main(string[] args)
    	{
    		//实例化对象
    		SumUtils s = new SumUtils();
    		//调用求两个整数和的方法
    		Console.WriteLine("两个整数和为{0}",s.Sum(3,6));
    		//打招呼
    		s.Sayhi();
    	};
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    方法重载

    在对方法调用时,需要注意方法重载。在C#中,可以在同一类定义多个方法名相同参数列表(参数类型、参数个数)不同的方法,这种形式就是方法重载,调用此类方法时,系统会根据实际传入参数,选择与其匹配的方法执行。

    //创建计算器类,完成求和
    class Counter
    {
    	//求两个整数和
    	public int Sum(int a,int b)
    	{
    		return a+b;
    	}
    	
    	//求阶乘
    	pubic int Sum(int a)
    	{
    		int sum = 0;
    		for(int i=1;i<a;i++)
    		{
    			sum *= i;
    		}
    	}
    }
    
    //在Main方法中调用
    class Program
    {
    	static void Main(string[] args)
    	{
    		Counter c = new Counter();
    		Console.WriteLine("整数和为:"+c.Sum(3,5));
    		Console.WriteLine("阶乘为:"+c.Sum(5));
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
  • 相关阅读:
    PCL点云处理之使用变换矩阵对点云去中心化(二百零七)
    Spring-ReactiveKafkaConsumer(反应式消费kafka消息)
    uniapp实现发送获取验证码
    加密技术1
    直播预告 | 这是一场你绝对不能错过的电商风控实操课程
    【Flink源码】再谈Flink程序提交流程(上)
    网络安全(黑客)自学
    外包干了5天,技术明显退步
    秋招面试题系列- - -Java 工程师(二)
    7 个适合初学者的项目,可帮助您开始使用 ChatGPT
  • 原文地址:https://blog.csdn.net/yue008/article/details/125632271