起名C#基础整理(二)

1、变量类型
int、double、string、char、bool、decimal
变量使用规则:先声明,再赋值,最后采取

1.字段、属性、方法、构造函数
字段:存储数据
性:保护字段,对字段的取值和设值进行限制
措施:描述对象的作为
构造函数:初始化对象(给目标的每个属性依次的赋值)
好像吃成员,如果非加访问修饰符,默认都是private
受各国一个私家的字段都安排一个国有的性质
特性的实质就是少数只法子

2、命名规范:
Camel:第一个单词首配母小写,其他单词首配母大写,其余字母小写
Pascal:每个单词的首字母都大写,其余字母小写

当我们创建好对象后
被这个目标的属性赋值用set
打印是特性之值的时节实施get

5、常量
宣示常量的语法:
const 变量类型 变量名叫=值;
例:public const int Che_SHI = 10001;
常量一旦赋值,不可知叫还赋值

this:当前仿佛的目标
this:调用当前相仿
this是将性能与有变量区分开来的。
构造函数:1、没有回到值 连void也不曾
2、构造函数的名号跟类名相同

6、枚举(规范我们的出)
语法:
[public] enum 枚举名
{
值1,
值2,
值3,
………..
}

构造函数可以重载
:this(name,0,0,gender)

[]屡遭代表足简简单单
Public:访问修饰符,公开之公共的,修饰一个成员的拜会权限。
enum:关键字,声明枚举的基本点字
枚举名:要抱pascal命名规范
拿枚举声明到命名空间的下面,类的外
面,表示这个命名空间下,所有的类似都得使这枚举。
枚举就是一个变量类型,像int、string这样
仅仅是枚举声明、赋值、使用的方同那些平常的变量类型不平等。
枚举是和谐写的变量类型

new:1、在内存中开发一块空间
2、在开拓的上空创建对象
3、调用对象的构造函数

咱俩可以一个枚举类型的变量和int类型和string类型互相转换。
枚举类型默认是与int类型相互配合的,所以可以透过强制类型转换的语法互相转换。
当转换一个枚举中没有的值的时节,不会见扔大,而是径直以数字显示出来。

界定:set get 构造函数

枚举同样也得以跟string类型互相转换,如果以枚举类型转换成string类型,则直调用ToString().
设若用字符串转换成为枚举类型则要下面这样一行代码:
(要更换的枚举类型)Enum.Parse(typeof(要转换的枚举类型),”要换的字符串”);
调用Enum类里的Parse()方法来救助我们用一个字符串转换成相应的枚举类型
万一换的字符串是数字,则就是枚举中从来不,也会无会见扔大。
要换的字符串是文本,如果枚举中无,则会丢弃来特别。

静态方法 类名.方法名
实例方法 对象名.方法名

7、结构
为一次性声明多个不同档次的变量(字段)
语法:
[public] struct 结构名
{
public string name;
成员//字段
}

静态方法只能看到静态成员
静态类不能够创建对象

先后中字段能存多单价值,变量只能存一个值。
字段起名规范,每个字段前面加一个下划线,来分变量和字段。

2、命名空间
命名空间可以看作是近乎的文书夹
得当类是属命名空间的。
假使当现阶段型遭到绝非这仿佛的命名空间,需要我们手动的导入这个看似所当的
取名空间。
1)、用鼠标去碰
2)、alt+shift+F10
3)、记住命名空间,手动的错过引用

8、数组
一次性仓储多个相同类别的变量就因此数组。
语法:
数组类型[] 数组名=new 数组类型[数组长度];
int []nums=new int [5];
反复组的长短要固定了,就不克还吃改动了

3、在一个路受到引用另一个档的切近
1)、在化解方案资源管理器的援右键添加引用
2)、引用命名空间

数组拥有初值
int数组初值 0
string数组初值 null(不占用空间)
bool数组初值 false

3、值类型和援类型
区别:
1、值类型和援类型在内存达到囤积的地方不均等。
2、在传递值类型和传递引用类型的早晚,传递的道不一样。
值类型我们称之为值传递,引用类型我们誉为引用传递。
咱学的值类型和援类型:
值类型:int、double、bool、char、decimal、struct、enum
引用类型:string、自定义类、数组
存储:
值类型的值是储存在内存的栈当中。
援类型的价是储存在内存的积中。

季种植写法
int[] nums = new int[5];
int[] nums = { 1, 2, 3, 4, 5 };(常用)
int[] nums = new int[5] { 1, 2, 3, 4, 5 };
int[] nums = new int[] { 1, 2, 3, 4, 5, };

堆放、栈、静态存储区域

int范围 最大值 int.MaxValue
最小值 int.MinValue
可以通过下标或者索引去访问数组中的元素

int number=10;
在仓库中开发一个上空,在是空间存储10,给这空间从名叫number
string s=”123″;
在积着开辟一个上空,在是空间存储”123″,有一个地点(引用) 0x001001,
于库中开发一个上空,存堆中的地址0x001001,起名叫s。现在s凡是指为堆着之内存的

9、冒泡排序
用一个数组中之要素以从大至多少或者打小到的逐条进行排列。
int[] nums = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
Array.Sort(nums); //对数组开展升序排列
Array.Reverse(nums); //对数组开展倒序排列
未需要返回值,需要一个数组作为参数

Person zsPerson=new Person();
zsPerson.Name=”张三”;

10、方法/函数
函数就是拿同堆代码进行录取的一律栽体制。
函数的语法:
[public]static 返回值类型 方法名([参数列表])
{
方法体:
}
public static int AddSum(int a,int b)
{
return a+b;
}

在积着开发空间,在这空间存储 new Person();
“张三”,有一个地址(引用)
以仓房中开拓一个空中,存堆中之地点,起名叫zsPerson

归来值类型:如果非需写返回值,写void。有返回值的用return返回
参数列表:完成这个点子所须使供被这主意的参数。有些计无待写参数。

4、字符串
1)、字符串的不可变性
当您叫一个字符串重新赋值之后,老值并没灭绝,而是又开发一块空间存储新值。
当次结束后,GC扫描整个内存,如果发现部分空间没有受指向,则马上把它销毁。

11、return的用法
1)在措施被归要赶回的价。
2)立即终止本次艺术。
3)一叠一叠的帮派,return只回去上平等层。

int 重新赋值 会在原先的栈空间覆盖原值
string
重新赋值,会于本来的积空间又开发一个空间存新值。栈中存地址之长空不转换

12、我们在Main()函数中,调用Test()函数。
咱俩管Main()函数称之为调用者,管Test()函数称之为被调用者。
假定Test()想只要收获Main()的值:
1)传递参数。
2)使用静态字段来法全局变量。

创建 string s1=”张三”
        string s2=”张三”
光以积着开拓一片空间 存储”张三”
当仓房中开拓两片空间命名为s1和s2指为堆中的空中(存储堆着之地址)

苟Main()想只要博取Test()的值:
1)返回值

起名 1

13、不管是实参还是形参,都是于内存中开发了上空的。

个体说明:

14、方法的成效自然要是单纯。
术中不用出现提示用户输入。

①当您创造了S1和S2后,就会于库中开拓两只空中

15.out、ref、params
1)、out参数。
假如您以一个方法吃,返回多单相同档次的价的上,可以设想返一个数组。
然而,如果回去多单不等门类的值的时节,返回数组就怪了,那么这个时节,
俺们好设想采用out参数。
out参数在一个措施吃可以返回多独不等类型的价。
out参数要求以方的内必须为该赋值

   一个叫S1,内存地址是1000XX

2)、ref参数
能以一个变量带入一个方被开展转移,改变就后,再将移后底值带起方法。
ref参数要求于章程外必须为那赋值,而艺术外足以不赋值。
ref不欲创造一个新的变量来接过返回值。

   一个受S2,内存地址是2000XX

ref是 有进有出,而out是 只出不前进。
3)、params可转移参数
将实参列表中以及可变换参数数组类型一致的因素还作数组的要素去处理。
params可转移参数必须是显示参列表中的最后一个因素。

②你给S1,S2赋值的string 类型 “张三”

public static void Test(string name,params int [] score)

   是是堆中开发的半空中内

16.方的重载
概念:方法的重载指的便是方的称一致,但是参数不同。
参数不同,分为两栽情形
1)、如果参数的个数相同,那么参数的项目就未能够同。
2)、如果参数的色相同,那么参数的个数就未能够一如既往。
***艺术的重载跟返回值没有提到。

   它吗发生只内存地址是XX0001

于是哪个就招哪个参
主意的重载就是好加大任何的参数

③公栈中之S1,S2空间存的凡积着  的内存地址XX0001,他们是跟一个事物

17、字符串的用法
字符串的length可以据此来比字的尺寸

④使您再度  S1=”李四”

18.方法中改屡组,不欲返回值来接过就得变更。数组在点子吃凡是单不同。

                    S2=“李四”

19.Cosole之几种办法
1)改变字体颜色
Console.ForegroundColor = ConsoleColor.Yellow;
2)console.clear(); 清屏
3)console.readkey(true);不形输出的按键
4)输出时,保留小数点后少员
Double avg=10/3;
Console.WriteLine(“{0:0.00}”, avg);

 
 它们啊只是将S1,S2里面的内存地址指向堆中开发的一个让”李四”的空中的内存地址。

   原来堆中存的”张三”不见面时有发生外改动。

⑤当您清理内存的时光,那个”张三”因为内存地址没有让引用过,就会见为清理掉(垃圾回收)

窗口-即时-及时窗口-&s1 &s2 可以看s1跟s2的内存地址
上面是栈中的地点,下面是积着之地址

起名 2

2)、我们可拿字符串看做是char类型的一个光读数组。
ToCharArray();将字符串转换为char数组
new string(char[] chs):能够以char数组转换为字符串

1 string s = "abcdefg";
2 char[] chs = s.ToCharArray();
3 chs[0] = 'b';
4 s= new string(chs);
5 Console.WriteLine(s);
6 Console.ReadKey();

Stopwatch 计时器
Stopwatch sw=new Stopwatch();
sw.Start();开始计时
sw.Stop();停止计时
sw.elapsed 时实例测量得出的到底运行时

StringBuilder sb=new StringBuilder();

sb.Append(i);追加

可知把这个i累加到sb里面

 1 StringBuilder sb = new StringBuilder();
 2 //string str = null;
 3 Stopwatch sw = new Stopwatch();
 4 sw.Start();
 5 for (int i = 0; i < 100000; i++)
 6 {
 7 //str += i;
 8 sb.Append(i);
 9 }
10 sw.Stop();
11 Console.WriteLine(sw.Elapsed);
12 Console.ReadKey();

 

string 为什么如此慢,因为其每次都使起空间
stringbuilder这么快是坐她于内存中初露空间,用来用去都是同样片类。
最后stringbuild还是得而tostring转为string 类型。

5、字符串提供的各种措施
//把字符串转为大写
LessonOne =LessonOne.ToUpper();
//把字符串转为小写
LessonOne=LessonOne.ToLower();
//比较少单字符串的价
LessonOne.Equals(LessonTwo,StringComparison.OrdinalIgnoreCase)
Equals同样 StringComparison.OrdinalIgnoreCase
枚举.忽略被比较的字符串的轻重写

string s = “a b c 3 12 – + _ , == fdf”;
//分割字符串Split
//把未思要之字符都写在char数组里
//数组虽然关乎少了,但是还是留给了一个缺损””
//后面长,StringSplitOptions.RemoveEmptyEntries把空让结果
char[] chs = { ‘ ‘,’_’,’=’,’+’,’,’,’-‘};
string[] str = s.Split(chs,StringSplitOptions.RemoveEmptyEntries);
Console.ReadKey();

练习

Console.WriteLine("请输入日期,格式如2008-08-08");
string s = Console.ReadLine();
//可以不用创建char []chs,直接把它New在里面
string [] date= s.Split(new char [] {'-' },StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine("你输入的日期是{0}年{1}月{2}日",date[0],date[1],date[2]);
Console.ReadKey();

//contains(包括),判断字符串中是不是包含指定的字符串

//Replace(替换) 将字符串中之一只字符串替换成一个初的字符串,返回
练习

1 string str = "国家领导人老赵";
2 if(str.Contains("老赵"))
3 {
4 str=str.Replace("老赵","**");
5 }
6 Console.WriteLine(str);
7 Console.ReadKey();

1 //Substring 截取字符串
2 string str = "今天天气好晴朗,处处好风光";
3 //把字符串当做数组,从下标0开始截取
4 str = str.Substring(1);
5 //从“天”开始截取,截取2个字
6 str = str.Substring(1,2);
7 Console.WriteLine(str);
8 Console.ReadKey();

 1 //StartsWith()判断字符串中是否以子串value开始 
 2 //EndsWith()判断字符串中是否以子串value结束 
 3 //使用方式相同
 4 string str = "今天天气好晴朗,处处好风光";
 5 if(str.StartsWith("今天"))
 6 {
 7 Console.WriteLine("是的");
 8 }
 9 else
10 {
11 Console.WriteLine("不是");
12 }
13 Console.ReadKey();

1 //判断某个字符串在字符串中第一次出现的下标位置,如果没有返回-1,由int类型接受
2 string str = "今天天气好晴朗,处处好风光";
3 int n=str.IndexOf('天');
4 //后面加个Int类型数字,表示找字符串中的第几个‘天’的下标
5 //int n=str.IndexOf('天',2);
6 //如果要找到所有‘天’的下标,就需要用循环来找
7 Console.WriteLine(n);
8 Console.ReadKey();

1 //LastIndexOf():判断某个字符串在字符串中最后一次出现的位置,如果没有同样返回-1
2 //LastIndexOf()经常和Substring配合使用
3 string path = @"c:\a\b\c\d\e\f\g\ff\苍\ds\fgd\d\苍老师.wav";
4 //找最后一个斜线后出现的文字才是最准确的,一直截到最后
5 int index=path.LastIndexOf("\\"); 两个斜线表示一个斜线

练习

1 string path = @"c:\a\b\c\d\e\f\g\ff\苍\ds\fgd\d\苍老师.wav"; @代表字符串中的\都表示\
2 int index = path.LastIndexOf("\\");字符串中\\代表一个\
3 path=path.Substring(index+1); 截取是从\开始,所以要加1
4 Console.WriteLine(path);
5 Console.ReadKey();

1 //Trim():去掉字符串中前后的空格
2 //TrimEnd():去掉字符串中结尾的空格
3 //TrimStart():去掉字符串中前面的空格
4 string str = " hahaha ";
5 str=str.Trim();
6 Console.Write(str);
7 Console.ReadKey();

 1 //string.IsNullOrEmpty():判断一个字符串是否为空或者为null
 2 string str = null;
 3 if(string.IsNullOrEmpty(str))
 4 {
 5 Console.WriteLine("是的");
 6 }
 7 else
 8 {
 9 Console.WriteLine("不是");
10 }
11 Console.ReadKey();

1 //string.Join():将数组按照指定的字符串连接,返回一个字符串。
2 string[] name = { "张三","李四","王五","赵六","田七" };
3 string str=string.Join("|", name); params可变参数:可以放数组也可以放参数
4 Console.WriteLine(str);
5 Console.ReadKey();

1)、Length:获得当前字符串中字符的个数
2)、ToUpper():将字符转换成特别写形式
3)、ToLower():将字符串转换成多少写形式
4)、Equals(lessonTwo,StringComparison.OrdinalIgnoreCase):比较简单个字符串,可以忽略大小写
5)、Split():分割字符串,返回字符串类型的数组。
6)、Substring():截取字符串。在截取的当儿包含要截取的老位置。
7)、IndexOf():判断有字符串在字符串中第一不成出现的职务,如果没回到-1、值类型和援类型在内存达到囤积的地方不一致。
8)、LastIndexOf():判断有字符串在字符串中最后一浅出现的职位,如果没一样返回-1
9)、StartsWith():判断以….开始 bool类型判断
10)、EndsWith():判断以…结束 bool类型判断
11)、Replace():将字符串中之一只字符串替换成一个初的字符串
12)、Contains():判断有字符串是否含有指定的字符串 bool类型判断
13)、Trim():去丢字符串中前后的空格
14)、TrimEnd():去丢字符串中最后的空格
15)、TrimStart():去丢字符串中前的空格
16)、string.IsNullOrEmpty():判断一个字符串是否为空或者也null
17)、string.Join():将数组按照指定的字符串连接,返回一个字符串。

6.复习
字符串需要控制的长处
1)字符串不可变,每新建一个字符串都见面以内存中开辟一片新的空中
2)字符串的措施

StringBuilder和String的区别
String在展开演算时(如赋值、拼接等)会生出一个新的实例,而StringBuilder则非会见。
以StringBuilder进行操作,最后再用ToString转为String类型即可。

1 string path = @"C:\Users\SJD\Desktop\22.txt"; 路径
2 string [] str= File.ReadAllLines(path,Encoding.Default); 
3 //File(静态类).ReadAllLines(方法,读取所有的行)读取的全是乱码
4 //Encoding.Default 去除乱码
5 Console.ReadKey(); 

7.练习
char类型数组转为string类型

1 char[]chs={‘1’,‘2’,‘3’};
2 string str=new string(chs);

请求来字符串中负有出现的e的位置
@第一种方法(必须会)

 1 string str = "daghdewejhadgwehhjfhajejwwe";
 2 int index = str.IndexOf('e');
 3 Console.WriteLine("第1次出现e的位置是{0}", index);
 4 int count = 1;
 5 while (index != -1)
 6 { 
 7 index = str.IndexOf('e', index + 1);
 8 count += 1;
 9 if (index == -1)
10 {
11 break;
12 }
13 Console.WriteLine("第{0}次出现e的位置是{1}", count, index);
14 }
15 Console.ReadKey();

老二栽办法
搜多独字的口舌就挺

1 string str = "daghdewejhadgwehhjfhajejwwe";
2 for (int i = 0; i < str.Length; i++)
3 {
4 if(str[i]=='e')
5 {
6 Console.WriteLine(i);
7 }
8 }
9 Console.ReadKey();

8.继承
每一个近似都如独立写在一个近乎公事里。

俺们兴许会见以有类似中,写有再次的成员,我们得以用这些又的积极分子,
独立的卷入到一个像样中,作为这些类似的父类。

格式 子类:父类
Student、Teacher、Driver 子类 派生类
Person 父类 基类

子类继承了父类,那么子类从父类那里继承过来了呀?
首先,子类继承了父类的属性与艺术,但是子类并没继承父类的私家字段。能看到也不能够因此
李一个有钱亲戚挂了,受益人是李,但是没为他银行密码。他连续过来了也就此无了。
题材:子类有没出持续父类的构造函数?
报经:子类并没持续父类的构造函数,但是。子类会默认的调用父类无参数的构造函数,
创办父类对象,让子类可以使用父类中的分子。
因此,如果在父类中重新勾了一个发出参数的构造函数之后,那个无参数的虽被波及少了,
子类就调用不顶了,所以子类会报错。

执行了父类无参构造函数,再夺实施子类的
施行父类的构造函数,就一定给创造一个父类的对象
因无父类的目标,子类没办法用父类的特性
创办子类对象的时候,也顺便创建了外父类的靶子,这样才能够为此到父类的性质与法,成员
子类包含了温馨之属性与父类对象(构造函数),内部的父类又饱含了他的性与方式

继续构造函数的历程可以参加子类的习性

父类默认调用无参的如果不是发出参的
解决办法:
1)、在父类中再度描绘一个任参数的构造函数。
2)、在子类中形的调用父类的构造函数,使用要字:base()

9.累的特性
1、继承的单根性:一个子类只能发出一个父类。
2、继承的传递性:爷爷-爸爸-儿子-孙子

10.查看类图
右边键类文件-视图-查看类图 可以看类之间的延续关系

11.object凡是所有类的基类。
若没有于一个类继承于另外一个好像,那么这个类似即继续于object

12.new关键字
1)、创建对象
2)、隐藏于父类那里继承过来的同名成员。
躲藏的产物就是子类调用不交父类的积极分子。

子类成员称与父类成员称一致,会藏继承的父类成员,隐藏后果就是是调整不至了。
累加new后只是不报错

13.复习
值类型
援类型
字符串 不可变性
同样堆方法
StringBuilder
继承 单根性
传递性
子类跟父类构造函数的关联
子类继承了父类的哟?
new关键字

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图