正式开始学习C#-----V0.2

本文详细介绍了C#编程的基础知识,包括基本数据类型、字符串处理、函数使用、类型转换等内容,并深入探讨了类的继承与多态、接口、抽象类等高级主题。

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

int 	i;
long	l;
string 	s;
char	c;
float	f;
bool	bFlag;
1.字符、字符串
(1)unicode
	c='郭';			//unicode 2个字节,但不能char c='cd';哦
(2)字符串替换
	s.replace("{0}",str);//把s字符串中的{0}字符串替换为	
(3)转义字符
	s=@"\t";
	Console.WriteLine(s);//这样可以输出\t字符串,如果不加@则输出一个tab,也就是8个空格的距离空白。"\\t"效果一样
//----------------------------------------------------------------
2.函数用法
(1)Round函数
	f=Math.Round(25.123456,4);//--->25.1235,四舍五入,保留4位小数
(2)DateTime时间
	string strTime=DateTime.Now.ToString();//默认是  2012/12/8 20:23:41
	string strTime=DateTime.Now.ToString("yyyy-MM ^v^ dd");//2012-12 ^v^ 08,也就是数据可以按照任意形式显示
	DateTime dt=DateTime.Now;//获取一个DateTime结构的数据
(3)Random随机
	Random rd=new Random();
	i=rd.next(100,200);//产生100~199之间的数据
(4)WriteLine
	Console.WriteLine("你的年龄是{0}岁",25);//{0}相当于c++的%d,大师都必须从0开始~
(5)引用参数
	private static void add(ref int i,ref int j)//注意static!
	{;//}
	调用时
	add(ref i,ref j);//而不像c++只要在定义时使用&引用标记
(6)输出参数
	public static void OutValues(out int i,out int j);//i和j不用初始化,这里完全就是为了弥补c\c++的缺点。
(7)数字类型参数,参数可变
	static void PrintArgs(params string[] args)
	{
		for(int i=0;i<args.Length;i++)//通过Length方法
		{
			Console.Write(args[i]+"\t");
		}
		Console.WriteLine();
	}
//----------------------------------------------------------------
3.类型转换、类型检查
(1)Parse用法
	i=int.Parse('1234');//-->1234,把其他任何类型的数值转成int类型数值
(2)强制转换
	i=(int)1.26;	//显式转换
	l=i;			//隐式转换
(3)转换成字符串
	s=i.ToString();	//不能直接对1234.ToString,一定要放到变量里面
	s=Convert.ToString(obj,i,l,f....);
(4)类型检查
	is:类型转换前的兼容性检查		变量 is 数据类型,返回bool类型(常量也可以哦,例如123.0是double)
	as:转换过程中的类型兼容性检查	用于类型转换
	obj=i;
	bFlag=obj is int;//True
	string s="Hello";
	obj=s;
	string str=s as string;//则str="Hello"
	int	i=s as int;//返回null
	
4.装箱、拆箱:值类型与Object类型之间转换
(1)装箱
	System.Object obj=i;//直接赋值
(2)拆箱
	i=(int)obj;	//和强制转换一样
	
5.建立文件
(1)新建一个类
新建C#文件后,定义一个类,命名空间名要和项目的命名空间一样才可以被调用。点击保存这个新建的C#文件后,会弹出问保存咋那里,选择保存到Program.cs一样的地方,然后在解决方案资源管理器中选择添加鲜有文件。然后就直接可以使用这个新定义的类了。而在C++中一定要include这个文件,特别烦恼的就是他们的互相依存关系,在C#中不用考虑~~编译器帮我们考虑好了。C#给力!
(2)

6.类的使用
(1)继承
	a.继承-->定义几乎和C++一样,但不要加public private protect等限定词
		文件1中
		namespace Example_6_6
		{
			class Graph
			{
				public double PI = Math.PI;
				public int    r  = 12;
			}
		}
		文件2中
		namespace Example_6_6
		{
			class Circular:Graph
			{
				public double getArea()
				{
					double area = base.PI*base.r*base.r;//使用了base来调用
					return area;
				}
			}
		}
	b.覆盖-->c++中的重构
		继承的类中使用new方法修饰函数
		public new double getArea()..
	
(2)多态:重载、重写(虚函数)
	a.重载和c++一样:变量数量或者类型不一样,方法重载和操作符重载
	b.重写:基类中使用virtual定义而继承重写虚函数,用关键字override
		class Graph
		{
			public virtual double getArea(){return 100;}//virtual
		}
		class Rectangle:Graph
		{
			public override double getArea()//override
			{
				return 120;
			}
		}
(2)封闭性:新的特性
	类中的某一个方法不需要被重写,甚至根本不应该被继承。
	a.封闭类:关键字sealed,放在类class前就可以,则其他类不可对它进行继承。
	b.封闭方法,同样放在方法最前面,即可.sealed public override double GetArea()...
7.接口:看上去很强大,不太理解如何使用
(1)创建接口
	namespace CSharp_CmdPure
	{
		interface IShape
		{
			double GetArea();
			double GetPerimeter();
		}
	}
(2)实现接口:要在派生类中才能实现,并且必须全部实现
	namespace CSharp_CmdPure
	{
		class Rectangle:IShape
		{
			public double GetArea(){return 100;}
			public double GetPerimeter(){return 120;}
		}
	}
(3)接口之间的继承关系
	类可以继承类,接口也可以继承另外的接口。但派生类,必须实现上面继承关系中所有接口的方法。
	
(4)多重继承关系:逗号分隔
	C#中,类不允许多重继承,即类不能继承二个以上基类(c++可以)。但类可以继承2个以上的接口,也可以在继承基类的同时继承另外的接口。

8.抽象类
(1)概念:抽象类的作用和接口类似,同样也定义了一些实现方法。与接口不同的是,其中有一些方法已经实现了。所以,从概念上来讲,抽象类是介于接口和类之间的一种特殊的类。[要晕了]
	继承抽象类的派生类中,必须要实现抽象方法,并且使用override关键字重写它。
(2)使用abstract修饰class
	abstract class Shape//抽象类
	{
		abstract public double GetArea();//抽象方法,当然其他正常方法都可以用
	}
	class Rectangle:Shape
	{
		public override double GetArea(){return 100;}
	}
(3)抽象类之间可以继承
	继承抽象类的抽象类不需要实现所有抽象方法。
(4)抽象类和接口直接的继承关系
不只是抽象类之间,以及和类之间有继承关系,抽象类和接口之间同样可以有继承关系。抽象类在继承接口时,可以实现接口定义的方法,也可以把该方法定义为抽象类,而不去实现。[更加复杂了]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值