C#基础2——⑤类,对象,类的构造函数,命名空间,字符串转字符

这篇博客介绍了C#编程的基础概念,包括类的定义和作用,对象的实例化,类的构造函数用于初始化对象,以及如何在遇到类重名问题时使用命名空间。此外,还提供了多个实例,如学生类和Person类的创建,展示了构造函数简化赋值的过程。最后,讲解了字符串转换为字符的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、类

1、类的实质是一种数据类型,类似于int、char等基本类型,不同的是它是一种复杂的数据类型。因为它的本质是类型,而不是数据,所以不存在于内存中,不能被直接操作,只有被实例化为对象时,才会变得可操作。

2、类是对现实生活中一类具有共同特征的事物的抽象。

3、类是模板,确定对象将会拥有的特征(属性)和行为(方法)

二、对象

将类实例化后,成为对象

三、类的构造函数

类的 构造函数 是类的一个特殊的成员函数,当创建类的新对象时执行。
构造函数的名称与类的名称完全相同,它没有任何返回类型。

四、实例

实例1:

创建一个学生类,6个属性,两个方法(了解字段如何通过属性赋值,读值)

class Student
{
	private string _name;
	public string Name
	{
		get{return _name;}
		set{_name = value;}
	}
	
	private char gender;
	public char Gender
	{
		get{return _gender;}
		set{_gender = value;}
	}

	private int _age;
	public int Age
	{
		get{return _age;}
		set{_age = value;}
	}

	private int _chinese;
	public int Chinese
	{
		get{return _chinese;}
		set{_chinese = value;}
	}
	
	private int _math;
	public int Math
	{
		get{return _math;}
		set{_math = value;}
	}

	private int _english;
	public int English
	{
		get{return _english;}
		set{_english = value;}
	}
	
	public void Say()
	{
		Console.WriteLine("我叫{0},今年{1}岁了,是{2}生", this.Name, this.Age, this.Gender);
	}
	
	public void Score()
	{
		Console.WriteLine("我叫{0},总成绩为{1},平均成绩为{2}", this.Name, (Chinese + Math + English), (Chinese + Math + English)/3);
	}
}

调取类中的属性和方法(较复杂)

	static void Main(string[] args)
	{
		Student zsStu = new Student();

		zsStu.Name = "张三";
		zsStu.Age = 18;
		zsStu.Gender = '男';
		zsStu.Chinese = 90;
		zsStu.Math = 06;
		zsStu.English = 89;
		zsStu.Say();
		zsStu.Score();


		Console.WriteLine("===============================");//华丽的分割线

		Student xlStu = new Student();

		xlStu.Name = "小兰";
		xlStu.Age = 17;
		xlStu.Gender = '女';
		xlStu.Chinese = 78;
		xlStu.Math = 88;
		xlStu.English = 55;
		xlStu.Say();
		xlStu.Score();

		Console.ReadKey(); 
	}

实例2:利用构造函数给里面的字段进行赋值

Person 类

public class Person
{
	public Person(string name,char gender,int age)
	{
		this._name = name;//this 是指示代词,当前字段
		this._gender = gender;
		this._age = age;
	}

	private string _name;
	public string Name
	{
		get {return _name;}
	}
	private char _gender;
	public char Gender
	{
		get {return _gender;}
	}
	private int age;
	public int Age 
	{
		get {return _age;}
	}

	public void Show()
	{
		Console.WriteLine("{0}岁的{1}在大米时代是最最可爱的{2}同学");
	}
}

主函数的调用

static void Main(string[] args)
{
	Person per = new Person("张三",'男',18);//利用构造函数给里面的字段进行赋值
	per.Show();
	Console.ReadKey();
}

显然,相比于实例1 的主函数,实例2利用构造函数后,就精简多了

实例3:车票练习

创建ticket类

public class Ticket				//字段为只读的前提下,如何向字段赋值,可使用构造函数进行赋值
{
	public Ticket(int distance)	//建立一个构造函数:因为是方法名与类名相同
	{
		if(distance<0)
		{
			distance = 0;	
		}
		this._distance = distance;//将Ticket构造函数传递过来的参数值distance赋值给本类中的_distance字段
	}

	int _distance;			//声明一个_distance字段,默认修饰符为private私有的
	public int Distance		//声明一个公共的Distance属性,用来向字段_distance传值的
	{
		get {return _distance;}
	}

	double _price;
	public double Price
	{
		get							//读值
		{
			if(_distance<=100)
			{
				return _distance * 1.0;		//返回字段_distance的值
			}
			else if (_distance<=200)
			{
				return _distance * 0.95;
			}
			else if (_distance<=300)
			{
				return _distance * 0.9;
			}
			else 
			{
				return _distance * 0.8;
			}
		}
	}
	
	public void Show()
	{
		Console.WriteLine("{0}公里的价格为{1}",this.Distance,this.Price);
	}
}

主函数调用

	static void Main(string[] args)
	{
		Ticket t = new Ticket(890);	  //实例化Ticket类,创建一个tick的对象,并向对象的属性赋值
		t.Show();
		Console.ReadKey();
	}

五、命名空间

1、用途:namespace(命名空间),用于解决类重名问题,可以看做“类的文件夹”

  • 如果代码和被使用的类在一个namespace则不需要using

  • 如果在不同命名空间下的类调用有两种方法

    • 写全称 命名空间.类名
    • 先using引用命名空间,再调用

using 关键字表明程序使用的是给定命名空间中的名称。例如,我们在程序中使用 System 命名空间,其中定义了类 Console。我们可以只写:

Console.WriteLine ("Hello there");

我们可以写完全限定名称,如下:

System.Console.WriteLine("Hello there");

实例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using _01面向对象;//需要先添加引用,再通过写using导入命名空间
using System.Threading.Tasks;

namespace _08命名空间
{
	class Program 
	{
		static void Main(string[] args)
		{
			//01面向对象.Person p = new _01面向对象.Person();  //第二种方式,写全称,需要添加引用,无需写using
			Person p = new PErson();
			p.Name = "张三";
			p.Walk();
			Console.ReadKey();
		}
	}
}

六、字符串转字符

复杂方法

string text = "很有意思呐";				//定义一个变量并向其赋值
Console.WriteLIne(text.Length);		    //在控制台太写入文本长度
char[] chs = new char[text.Length];		//声明一个变量为chs的char数组变量,长度为字符串文本长度
for(int i = 0; i < text.Length;i++)		// for循环,循环次数为文本的长度
{
	chs[i] = text[i];					//将字符串的内容逐一赋值给字符数
}
chs[0] = '超';

for (int i = 0; i < chs.Length; i++)	//for循环,循环次数为chs字符数组的长度
{
	Console.WriteLine(chs[i]);			//在控制台上逐一写入字符数组的内容
}
Console.ReadKey();

精简

			string text = "很有意思呐";
            char[] chs = text.ToCharArray();//调用转换为字符方法ToCharArray(),将字符串转换为字符,并赋值给字符变量
            chs[0] = '超';//改值,修改第一个字符值
            text = new String(chs);//变成新的字符串
            Console.WriteLine(text);

            Console.ReadKey();
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值