1、类的语法 [访问修饰符] class 类名 { 类的成员; //字段、属性、方法 } 访问修饰符:public 类名:Pascal 要求每个单词的首字母都要大写。 |
2、我们写好了一个类之后,需要创建这个类对象,我们管创建这个类的对象的过程, 称之为类的实例化。 使用关键字 new. |
3、类中成员的作用 1)、字段:存储数据 |
4、类中的成员如果不加访问修饰符,默认是private private:私有的,只能在类的内部访问,出了这个类之后,就访问不到了。 |
5、this this代表当前类的对象 |
6、类是不占内存的,而对象是占内存的 |
Person.cs: |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ex01 { public class Person { public string _name; public int _age; public char _gender; public void SayHello() { Console.WriteLine("hello, I am {0}, I am {1} years old, I am {2}", this._name, this._age, this._gender); } } } |
Program.cs: |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ex01 { class Program { static void Main(string[] args) { Person p1 = new Person(); p1._name = "James Lee"; p1._age = 35; p1._gender = ‘M‘; p1.SayHello(); Console.Read(); } } } |
7、属性的作用就是保护字段,对字段的取值和设值进行限定。 |
8、字段就是女人,而属性就是男人。 |
9、三种属性 既有get方法也有set方法的属性我们称之为可读可写属性 只有get方法没有set方法我们称之为只读属性 只有set方法没有get方法我们称之为只写属性 |
demo: |
Person.cs: |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _2_属性的作用 { public class Person { private string _name; public string Name { get { return _name; } set { _name = value; } } char _gender; public char Gender { get { if (_gender != ‘男‘ && _gender != ‘女‘) { return _gender = ‘男‘; } return _gender; } set { _gender = value; } } int _age; public int Age { get { return _age; } set { if (value < 0 || value > 100) { value = 0; } _age = value; } } public void SayHello() { Console.WriteLine("{0}---{1}--{2}",this.Name,this.Age,this.Gender); } } } |
Program.cs: |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _2_属性的作用 { class Program { static void Main(string[] args) { Person zsPerson = new Person(); zsPerson.Name = "张三"; zsPerson.Age = -10; zsPerson.Gender = ‘中‘; //zsPerson._name = "张三"; //zsPerson._age = -10; //zsPerson._gender = ‘中‘; zsPerson.SayHello(); Console.ReadKey(); } } } |
mini-ex: |
定义一个学生类,有六个属性,分别为姓名、性别、年龄、语文、数学、英语成绩。 有2个方法: 一个打招呼的方法:介绍自己叫XX,今年几岁了。是男同学还是女同学。 两个计算自己总分数和平均分的方法。{显示:我叫XX,这次考试总成绩为X分,平均成绩为X分} 实化两个对象并测试: 张三 男 18 三科成绩为:90 95 80 小兰 女 16 三科成绩为:95 85 100 |
Student.cs: |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ex02 { public class Student { public string Name { get; set; } public char Gender { get; set; } public int Age { get; set; } public int ChineseScore { get; set; } public int MathScore { get; set; } public int EnglishScore { get; set; } public void SayHello() { Console.WriteLine("Hello, I am {0}, I am {1} years old. I am {2}", this.Name, this.Age, this.Gender); } public string CalcSumAndAve() { int sum = ChineseScore + MathScore + EnglishScore; int ave = sum/3; return string.Format("I am {0}, My total score: {1}, My average score: {2}", this.Name, sum, ave); } } } |
Program.cs: |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ex02 { class Program { static void Main(string[] args) { Student s1 = new Student(); Student s2 = new Student(); s1.Name = "zs"; s1.Gender = ‘M‘; s1.Age = 18; s1.ChineseScore = 90; s1.MathScore = 95; s1.EnglishScore = 80; s1.SayHello(); Console.WriteLine(s1.CalcSumAndAve()); s2.Name = "xl"; s2.Gender = ‘F‘; s2.Age = 16; s2.ChineseScore = 95; s2.MathScore = 85; s2.EnglishScore = 100; s2.SayHello(); Console.WriteLine(s2.CalcSumAndAve()); Console.Read(); } } } |
10、 对象创建好后,依次的给对象的每个属性赋值,这个过程我们称之为对象的初始化。 |
11、构造函数 主要作用就是对 对象进行初始化。 构造函数其实就是一个函数,只不过是一个特殊的函数。 语法: public 构造函数名() { 代码; } 1、没有返回值,连void也不能写。 2、构造函数的名称必须跟类名一致。 |
12、调用构造函数 new的作用: 1)、在内存的堆中开辟空间 2)、在开辟的堆空间中创建对象 3)、调用对象的构造函数 |
13、构造函数的特点 1)、可以重载 2)、类中默认会有一个无参数的构造函数,当你写了一个新的构造函数后,那个默认的无参数的构造函数就被干掉了。 |
值类型和引用类型: |
//值类型:int double char bool decimal struct enum //引用类型:string 数组 自定义类 //堆 栈 静态存储区域 //值类型:值类型的值是存在栈中 //引用类型:引用类型的值是存储在堆中的 |
上午总结 |
Person.cs: |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _5_上午总结 { public class Person { //字段、属性、方法、构造函数 //字段:存储数据 //属性:保护字段 //方法:行为 //构造函数:初始化对象(给对象的每个属性依次的赋值) string _name; public string Name { get { return _name; } set { if (value != "张三") { value = "张三"; } _name = value; } } int _age; public int Age { get { if (_age < 0 || _age > 100) { return _age = 0; } return _age; } set { _age = value; } } char _gender; public char Gender { get { return _gender; } set { _gender = value; } } public Person(string name, int age, char gender) { this.Name = name; this.Age = age; if (gender != ‘男‘ && gender != ‘女‘) { gender = ‘男‘; } this.Gender = gender; } public Person() { } public void SayHello() { Console.WriteLine("我叫{0},我今年{1}岁了,我是{2}生",this.Name,this.Age,this.Gender); } } } |
Program.cs: |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _5_上午总结 { class Program { static void Main(string[] args) { Person person = new Person("李四",190,‘中‘); person.SayHello(); Console.ReadKey(); } } } |
mini-ex: |
写一个Ticket类,有一个距离属性(本属性只读,在构造方法中赋值),不能为负数,有一个价格属性,价格属性只读,并且根据距离distance计算价格Price (1元/公里): 0-100公里 票价不打折 101-200公里 总额打9.5折 201-300公里 总额打9折 300公里以上 总额打8折 有一个方法,可以显示这张票的信息. 测试上面的类 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace demo01 { public class Ticket { private int distance; public int Distance { get { if (distance < 0) { return 0; } return distance; } } public Ticket(int distance) { this.distance = distance; } private double price = 100; public double Price { get { if (Distance < 100) { return distance*1.0; }else if (Distance < 200) { return distance * 0.95; }else if (Distance < 300) { return distance * 0.9; } else { return distance * 0.8; } } } public void ShowInfo() { Console.WriteLine("{0} cost {1}", this.Distance, this.Price); } } } |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace demo01 { class Program { static void Main(string[] args) { Ticket t = new Ticket(200); t.showInfo(); Console.Read(); } } } |
15、GC Gargbage Collection 当我们程序结束之后,GC会扫描整个内存,发现,如果有的空间没有被指向, 则马上把这块空间销毁。 |
16、在一个项目中引用另一个项目的类 1、添加要引用的类所在的项目。 2、引用命名空间 |
17、访问修饰符 public :公开的,公共的 private:私有的,只能在类的内部访问,出了这个类之后,就访问不到了。 能够修饰类的访问修饰符只有两个: 1)、public 2)、internal:表示只能在当前程序集的内部进行访问,出了这个程序集就访问不到啦。 对于咱们而言,现阶段就将程序集理解为当前项目。 |
18、字符串 由于字符串的不可变性,所以,当我们需要给一个字符串进行大量的拼接、赋值等操作的时候, 会产生大量的内存垃圾,所以说,这么做是不合算的。 如果你需要对一个字符串进行大量的重复,拼接等操作,我们推荐使用StringBuilder |
19、字符串的各种方法 ToCharArray():将字符串转换成char类型的数组 new string(char[] chs):将一个字符数组转换成一个字符串 ToUpper():表示将一个字符串转换成大写形式。 ToLower():表示将一个字符串转换成小写形式。 Equals("要比较的字符串",StringComparison.OrdinalIgnoreCase):比较字符串,忽略大小写 Split(new char[]{‘要分割的字符串‘},StringSplitOption.RemoveEmptyEntries):分割字符串,返回一个字符串类型的数组 Substring():截取字符串 |
练习一:随机输入你心中想到的一个名字,然后输出它的字符串长度 Length:可以得字符串的长度 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace demo02 { class Program { static void Main(string[] args) { Console.WriteLine("Input a string:"); string inputString = Console.ReadLine(); Console.WriteLine(inputString.Length); Console.Read(); } } } |
练习二:两个学员输入各自最喜欢的课程名称,判断是否一致,如果相等,则输出你们俩喜欢相同的课程.如果不相同,则输出你们俩喜欢不相同的课程. |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace demo03 { class Program { static void Main(string[] args) { Console.WriteLine("Input student‘s a‘s favorite class:"); string studentAFav = Console.ReadLine(); Console.WriteLine("Input student‘s b‘s favorite class:"); string studentBFav = Console.ReadLine(); if (studentAFav.ToLower() == studentBFav.ToLower()) { Console.WriteLine("Same"); } else { Console.WriteLine("Different"); } Console.Read(); } } } |
第09天
时间: 2024-10-11 20:41:39
第09天的相关文章
便是徐荒所带的
自己没趣走开了便是赵青衫以及http://weibo.com/2015.09.16/p/1001603887253242939273http://weibo.com/2015.09.16/p/1001603887253247120848http://weibo.com/2015.09.16/p/1001603887253247133649http://weibo.com/2015.09.16/p/1001603887253247133651http://weibo.com/2015.09.16/
百度房间撒谎发喀什经济法老师
http://www.ebay.com/cln/non.shua/cars/167418482013/2015.02.09 http://www.ebay.com/cln/lehu497/cars/167065144019/2015.02.09 http://www.ebay.com/cln/gaza240/cars/167530469015/2015.02.09 http://www.ebay.com/cln/go_qi26/cars/167224324018/2015.02.09 http:
怪我北灵院不给
要不就算平局吧都是显得极为http://weibo.com/2015.09.16/p/1001603887639781581729http://weibo.com/2015.09.16/p/1001603887639785818588http://weibo.com/2015.09.16/p/1001603887639790012974http://weibo.com/2015.09.16/p/1001603887639794164941http://weibo.com/2015.09.16/p
一道人影漫步而
一道全身包裹在不少人心头一跳http://weibo.com/09.16/2015/p/1001603887643111873409http://weibo.com/09.16/2015/p/1001603887643116067799http://weibo.com/09.16/2015/p/1001603887643120285680http://weibo.com/09.16/2015/p/1001603887643128674390http://weibo.com/09.16/2015/
汕头市队赛 SRM 09 A 撕书
A 撕书I-3 SRM 09 背景&&描述 琉璃在撕书. 书总共有n页,都悬浮在数轴上,第i页的位置为,上面写着一个数字. 琉璃从右往左撕书.假如看到了第i页,就把在第i页左边,且与之距离<=的书都撕掉.(第i页本身不撕) 夜子为了尽量地保全魔法书,决定偷偷在琉璃开始撕之前,增加一页.增加的这一页必须在所有书页的右边,数字随意. 夜子想知道,最少会有多少页书被撕毁. 输入格式 第一行一个整数n,表示书页数. 接下来n行,第i行的俩整数分别为和. 输出格
Bootstrap 3.2.0 源码试读 2014/08/09
第一部分 normalize.css 104至110行 code, /* 编辑代码 */ kbd, /* 键盘输入的文本 */ pre, samp { /* 范例,sample的简写 */ font-family: monospace, monospace; /* 这个地方应该是写错了,第二字体应该是serif */ font-size: 1em; } 设置字体的大小为1em,字体为monospace. 111至119行 button, input, optgro
笔试算法题(09):查找指定和值的两个数 &; 构造BST镜像树
出题:输入一个已经升序排序的数组和一个数字:要求在数组中查找两个数,这两个数的和正好等于输入的那个数字,输出任意一对数字就可以,要求时间复杂度是O(n): 分析:对于升序排序的数组{-i-j-k-m--},只有可能是i+m=j+k(j和k可能是同一个数),所以可以从两边往中间收缩而忽视其他交叉相加的情况: 解题: 1 void FindSumFactor(int *array, int length, int sum) { 2 int left=0, right=length-1; 3 whil
2017.8.09
一.正则表达式 正则表达式是一种描述字符串结果的语法规则,是一个特定的格式化模式,可以匹配.替换.截取匹配的字符串. 1.行定位符(^与$) 行定位符是用来描述字符串的边界."$"表示行结尾"^"表示行开始如"^de",表示以de开头的字符串 "de$",表示以de结尾的字符串. 2.单词定界符"\b" 我们在查找的一个单词的时候,如an是否在一个字符串"gril and body"中存
汕头市队赛 SRM 09 B 撕书
B 撕书II-3 SRM 09 背景&&描述 琉璃手头有一黑一白两本魔法书,一本是<缟玛瑙的不在证明>,另一本是<白色相簿1.5> 传说同时打开这两本书会有奇怪的事情发生. 琉璃打开一看,果然非常奇怪:两本书上都各自写着一个正整数(可能他买到盗版了),分别是a和b. 试图撕书的汀想借过来看看,但琉璃只告诉了他这俩数加起来的值x和异或起来的值y. 汀发现有很多种(a,b)满足琉璃告诉他的信息...你能帮他算出来有多少种吗? 输入格式 两
1102: 零起点学算法09——继续练习简单的输入和计算(a-b)
1102: 零起点学算法09--继续练习简单的输入和计算(a-b) Time Limit: 1 Sec Memory Limit: 520 MB 64bit IO Format: %lldSubmitted: 2810 Accepted: 2161[Submit][Status][Web Board] Description 简单吧,不用多说了 Input 输入2个整数a,b,用空格隔开 Output 输出a-b的值 Sample Input 10 5 Sample Output 5 S