只是简单的记录一下自己的学习,第一次随便写写,如有错误请指正
c#枚举(Enum):枚举就是一组整数的常量,用enum来声明,枚举是不能继承和传递继承的,这样听起来有有一点的难以理解,我用自己的想法再介绍一下枚举就是你自己设置的一组int类型的数值但他和数组不一样的是,他可以定义符号名字,而不需要定义数值,
c#枚举里的数值是如果你没有赋值,他就是从零开始,而下一个就是前一个数加一(比如我们的第一个数是定义的第一个值是5,而我们的第二个值我们没有赋值哪么他的值就会自动的按照他的排序方式,将后面这个数赋值为6)从图片我们就可以看出来我们枚举的特性,他里面的数值的赋值的方式就是,如果我们赋值了哪他就是我们赋值哪个数,如果我们都没有赋值就从零开始,如果是一部分赋值和一部分没有赋值,哪赋值了的就是赋值的数,没有赋值的按照前一个数加一来赋值
到现在为止我并没有看到过枚举的实际使用,希望以后能看到使用条件,和方法,
c# class类:这个是c#里非常重要的一个部分,是贯通整个c#的组成部分,一定要学会类的使用方法,和熟练的使用类
类的定义方式 :修饰符(默认为internal) class+class_名字+{里面的成员修饰符默认为private}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _2022_6_2
{
class Tiji
{
public int chang;
public int kuan;
public int gao;
public int tiji2 = 0;
}
class Program
{
static void Main(string[] args)
{
Tiji tiji = new Tiji();
Tiji tiji1 = new Tiji();
tiji.chang = 4;
tiji.kuan = 6;
tiji.gao = 9;
tiji.tiji2 = tiji.chang * tiji.kuan * tiji.gao;
Console.WriteLine("该长方形的长{0},宽{1},高{2},体积{3}", tiji.chang, tiji.kuan, tiji.gao, tiji.tiji2);
Console.ReadLine();
}
}
}
其实我们在前面的学习中就已经使用了类,现在我们来详细的学习一下类的使用
类的成语函数,在类里面我们都有他的原型或者定义,他是一个类的成员,他可以在类的内部任何何成员里使用访问和操作,成员变量用私有的修饰符,或者默认来实现成员的私有封装,然后用类里的公共成员来访问这些成员,
这里我们就可以看到我们封装了一组数据然后用类里的公共成员来访问这些成员然后再运用到外面拿来使用,这个时候我们的外面就不可以直接访问我们已经封装的函数
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _2022_6_2
{
class Tiji
{
private int chang;
private int kuan;
private int gao;
private int tiji2 = 0;
public void fanhuiz(int ch,int ku,int g)
{
chang = ch;
kuan = ku;
gao = g;
}
public int tijijs(int ti)
{
ti = chang * kuan * gao;
return ti;
}
}
class Program
{
static void Main(string[] args)
{
Tiji tiji = new Tiji();
Tiji tiji1 = new Tiji();
tiji.fanhuiz(7, 1, 43);
int tiji3=tiji.tijijs(0);
Console.WriteLine("该长方形的体积{0}",tiji3);
Console.ReadLine();
}
}
}
c#class的构造函数:就是当我们创建类的新对象的时候执行,想当于是我们在外部创建一个新的对象的时候,我们就会执行这个构造函数,
这里我们运行起来后会多一句我们创建了一个新的对象,构造函数运行,因为我们在底下新生成了一个类的实例所以他就会运行我们的构造函数,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _2022_6_2
{
class Tiji
{
private int chang;
private int kuan;
private int gao;
private int tiji2 = 0;
public Tiji()
{
Console.WriteLine("我们创建了一个新的对象,构造函数运行");
}
public void fanhuiz(int ch,int ku,int g)
{
chang = ch;
kuan = ku;
gao = g;
}
public int tijijs(int ti)
{
ti = chang * kuan * gao;
return ti;
}
}
class Program
{
static void Main(string[] args)
{
Tiji tiji = new Tiji();
tiji.fanhuiz(7, 1, 43);
int tiji3=tiji.tijijs(0);
Console.WriteLine("该长方形的体积{0}",tiji3);
Console.ReadLine();
}
}
}
我们上面这种构造函数默认的没有参数,就叫做,默认构造函数,当然我们也可以为我们的构造函数添加参数,这样我们就可以在构造函数运行时给我们创建新的对象并给我们赋值,这里我们运行有参数的构造函数,新生成了长方形的个数,并加以使用,算出了5个长方形的体积
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _2022_6_2
{
class Tiji
{
private int chang;
private int kuan;
private int gao;
private int gs;
private int tiji2 = 0;
public Tiji( int h)
{
gs = h;
Console.WriteLine("我们创建了一个新的对象,为长方形的个数{0}个",h);
}
public void fanhuiz(int ch,int ku,int g)
{
chang = ch;
kuan = ku;
gao = g;
}
public int tijijs(int ti)
{
ti = chang * kuan * gao*gs;
return ti;
}
}
class Program
{
static void Main(string[] args)
{
Tiji tiji = new Tiji(5);
tiji.fanhuiz(7, 1, 43);
int tiji3=tiji.tijijs(0);
Console.WriteLine("该长方形的总体积{0}",tiji3);
Console.ReadLine();
}
}
}
c#class中的析构函数:在菜鸟教程里说的是当我们类的对象超出范围时执行,这里我不是很理解什么叫超出对象的范围,底下的事例中也没有看到超出对象范围的展现出来,看了一下大佬的讲解基本就是一个垃圾的回收的函数,用来回收多余的空间
c#class里的静态成员:static静态的修饰符,在语句的前面加上static来声明这个为静态的,静态成员只有一个副本,当我们使用了static后对象可以直接在class里调用而不需要实例化这个类再来调用,这个静态的对象也可以在外部来赋值,这底下的代码运行起来可以看到我们就定义了一个静态的类型,但是我们实例化了两个来运行他可以看到两个不同的实例运用的是一个静态的变量a
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _2022_6_2
{
class Tiji
{
public static int a;
public void js()
{
a++;
}
public int shuchu()
{
return a;
}
//private int chang;
//private int kuan;
//private int gao;
//private int gs;
//private int tiji2 = 0;
//public Tiji( int h)
//{
// gs = h;
// Console.WriteLine("我们创建了一个新的对象,为长方形的个数{0}个",h);
//}
//~Tiji()
//{
// Console.WriteLine("结束时执行");
//}
//public void fanhuiz(int ch,int ku,int g)
//{
// chang = ch;
// kuan = ku;
// gao = g;
//}
//public int tijijs(int ti)
//{
// ti = chang * kuan * gao*gs;
// return ti;
//}
}
class Program
{
static void Main(string[] args)
{
Tiji tiji = new Tiji();
Tiji tiji1 = new Tiji();
tiji.js();
tiji.js();
tiji.js();
tiji1.js();
tiji1.js();
tiji1.js();
Console.WriteLine("第一个实例化a的值为{0}", tiji.shuchu());
Console.WriteLine("第二个实例化a的值为{0}", tiji1.shuchu());
Console.ReadLine();
//Tiji tiji = new Tiji(5);
//tiji.fanhuiz(7, 1, 43);
//int tiji3=tiji.tijijs(0);
//Console.WriteLine("该长方形的总体积{0}",tiji3);
//Console.ReadLine();
}
}
}
在静态对象后,还有静态函数,和静态的对象一样,在修饰符后面加上static的静态修饰符,当一个函数是静态后,这个静态函数也就只能访问静态的变量,这里我们看到当我们定义了静态的函数方法后,就不可以在后面用实例化来使用这个方法了。而上必须直接在类里来访问这个静态的方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _2022_6_2
{
class Tiji
{
public static int a;
public void js()
{
a++;
}
public static int shuchu()
{
return a;
}
//private int chang;
//private int kuan;
//private int gao;
//private int gs;
//private int tiji2 = 0;
//public Tiji( int h)
//{
// gs = h;
// Console.WriteLine("我们创建了一个新的对象,为长方形的个数{0}个",h);
//}
//~Tiji()
//{
// Console.WriteLine("结束时执行");
//}
//public void fanhuiz(int ch,int ku,int g)
//{
// chang = ch;
// kuan = ku;
// gao = g;
//}
//public int tijijs(int ti)
//{
// ti = chang * kuan * gao*gs;
// return ti;
//}
}
class Program
{
static void Main(string[] args)
{
Tiji tiji = new Tiji();
tiji.js();
tiji.js();
tiji.js();
Console.WriteLine("第一个实例化a的值为{0}", Tiji.shuchu());
Console.ReadLine();
//Tiji tiji = new Tiji(5);
//tiji.fanhuiz(7, 1, 43);
//int tiji3=tiji.tijijs(0);
//Console.WriteLine("该长方形的总体积{0}",tiji3);
//Console.ReadLine();
}
}
}