[1] //1.请将字符串数组{ "中国", "美国", "巴西", "澳大利亚", "加拿大" }中的内容反转。然后输出反转后的数组。不能用数组的Reverse()方法。
string[] strArray = { "中国", "美国", "巴西", "澳大利亚", "加拿大" };
string temp = "";
for (int i = 0; i < strArray.Length/2; i++)
{
temp = strArray[i];
strArray[i] = strArray[strArray.Length - 1 - i];
strArray[strArray.Length - 1 - i] = temp;
}
foreach (var item in strArray)
{
Console.Write(item+"\t");
}
Console.ReadKey();
[2] //随机生成10个1-100内的非重复数字放入ArrayList集合中
ArrayList array = new ArrayList();
Random r = new Random();
while (array.Count<10)
{
//Random r = new Random();不要放在这
int num = r.Next(1, 101);
if (!array.Contains(num))
{
array.Add(num);
}
}
foreach (var item in array)
{
Console.Write(item+"\t");
}
Console.ReadKey();
[3]//遍历窗体控件,给所有的label赋值
foreach (Control item in this.Controls)
{
if (item is Label)//当前的控件是不是label
{
item.Text = "帅";
}
}
[4] public class Student
{
string _name;
int _age;
char _gender;
public Student() { }
//类中如果没有写构造函数,则默认有一个无参数的构造函数
//类中如果写了一个有参数的构造函数,那么此时类中只有一个构造函数,原来无参数的构造函数被干掉了
public Student(string name, int age, char gender)
{
this.Name = name;
this.Age = age;
this.Gender = gender;
}
public string Name
{
get { return _name; }
set { _name = value; }
}
public int Age
{
get { return _age; }
set { _age = value; }
}
public char Gender
{
get { return _gender; }
set { _gender = value; }
}
public void SayHi()
{
Console.WriteLine("我是学生");
}
}
[5]猜拳游戏
[6]封装、继承、多态;字段、属性、索引;访问权限;引用、命名空间;变量作用域
[*]
[*]
private :自己类可以访问
protected :自己类及子类可访问
internal:本程序集内可访问,本程序集—一个项目即一个程序集
protected internal:具体情况 具体分析,二者修饰的权限是一个并集不是交集
①能被类的子类所访问(不管这个子类在哪个程序集里)
②并且能被同一个程序集的类所访问
public:任何地方皆可访问
注意:
类的内部的成员,只要没有访问修饰符,默认就是private。
类的默认访问权限是internal
修饰类的访问修饰符只能有两种:public internal。
[*]基础班相关笔记:
1、访问修饰符
public:公开的,公共的,在哪都能访问到
private:表示私有的,只能在当前类的内部才能够访问到
internal:只能在当前项目中访问。
2、this:
1)、代表当前类的对象
2)、调用当前类的构造函数
3、类是不占内存的,而对象是占内存的。
4、静态和非静态的区别
问:非静态类中,能不能出现静态成员?
答:在非静态类中,可以出现静态的成员。
静态方法中只能够访问到静态的成员,而不-能访问到非静态的成员。
在非静态的方法中可以访问到静态的成员。
问:在静态类中,能不能够出现非静态成员?
答:在静态类中不能出现非静态成员。只能有静态成员。
静态成员和非静态成员调用上的区别:
非静态成员在调用的时候,使用对象.非静态成员();的方式进行调用
而静态成员在调用的时候,使用类名.静态成员();的方法进行调用
注意:静态类是不允许被实例化的。
什么时候使用静态类,什么时候使用非静态类。
1、我们一般把静态类作为一个工具类来使用。Console
2、静态类的资源在全局中是共享的。
3、静态类只有在程序结束的时候才释放资源。
5、继承
继承解决的问题就是减少冗余代码。
Student类和Teacher类继承了Person类,我们管Student类和Teacher类叫做子类,管Person类叫做父类。
或者 我们管Student类和Teacher类叫做派生类,管person叫做基类。
父类只能使用自己的成员,不能使用子类的成员,而子类既可以使用父类的成员,也可以使用自己的成员。
子类究竟从父类那里继承过来了什么?
子类并没有继承父类的私有字段。【有争议,个人认为继承了,但不能访问。理由:子类继承了父类的属性这是没有争议的,但属性本质上是方法,不存储数据,存储数据的是与属性相关连的字段。合理的设计属性与字段是捆绑存在的。】
子类也没有继承父类的构造函数。
子类继承了父类的属性、方法.
子类会默认的调用父类当中那个默认的无参数的构造函数,当咱们在父类中写了新的构造函数之后,
原来那个默认的无参数的构造函数就被干掉了,此时,子类调不到父类中无参数的构造函数,就报错了。
解决办法有两个
1)、在父类中重新添加一个无参数的构造函数
2)、在子类中显示的去调用父类中的构造函数。:base
单根性:一个类只能有一个父类。
传递性:
6、里氏转换
1)、子类可以赋值给父类,如果有一个地方,需要一个父类类型的参数,那么你可以给一个子类类型的参数
2)、如果父类中装的是子类对象,那么可以,将这个父类强转为对应的子类对象。
7、is和as的用法
is:表示转换,如果能够转换成功,则返回一个true,否则返回一个false。
as: 表示转换,如果转换成功,则返回对应的对象,否则返回一个null。
[7] //索引
public class Person
{
public string this[int index]
{
get
{
string str = "";
switch (index)
{
case 0: str = this._name; break;
case 1: str = this._age.ToString(); break;
case 2: str = this._gender.ToString(); break;
}
return str;
}
}
string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}
char _gender;
public char Gender
{
get { return _gender; }
set { _gender = value; }
}
}
[8继承案例]
namespace _13继承案例
{
public class Person
{
public Person(string name,int age,char gender)
{
this._name = name;
this._age = age;
this._gender = gender;
}
public Person(string name):this(name,0,‘男‘)
{
// this._name = name;
}
public Person(string name,int age):this(name,age,‘男‘)
{ }
public Person()
{ }
protected string _name;
//如果字段的前面修饰符是protected 则,本类中,子类中都可以访问
public string Name
{
get { return _name; }
set { _name = value; }
}
char _gender;
public char Gender
{
get { return _gender; }
set { _gender = value; }
}
int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}
public virtual void SayHello()
{
Console.WriteLine("我叫==================={0}", this.Name);
// Console.WriteLine();
}
}
}
namespace _13继承案例
{
public class Student:Person
{
public Student(string name,int age,char gender,double score):base(name,age,gender)
{
this._score = score;
}
double _score;
public double Score
{
get { return _score; }
set { _score = value; }
}
}
}
namespace _13继承案例
{
class Teacher:Person
{
public Teacher(string name,int age,char gender,double salary):base(name,age,gender)
{
this._salary = salary;
}
double _salary;
public double Salary
{
get { return _salary; }
set { _salary = value; }
}
public void SayHello()
{
this.SayHello();
Console.WriteLine("这里是子类");
//Console.WriteLine("我是子类,老师{0}",this.Name);//
//base.SayHello();
}
}
}