黑马程序员__c#基础5
------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------
使用构造方法的好处
1对多个属性赋值时不需要重复写实力名
2可以保证用户在new一个对象的时候必须对某一个属性进行赋值
3在创建对象时对只读属性进行初始化就是赋初值也只能赋一次值
当我们定义好一个类,如果我们没有写构造方法,那么系统会自动给我们加上一个默认的没有参数的构造方法,在这个构造方法中什么也不做我们也看不到。
我们可以定义一个构造方法:
构造方法是一个特殊的方法,它的名字和类的名字相同,并且没有返回值,恋void都可以省略不写一旦我们手写一个构造方法后,系统原先默认给我们添加的那个无参数的构造方法就不会再为我们添加了。
定义一个构造方法要和类名相同一般情况下要加public访问修饰符好方便访问。
指示代词this 表示当前实例当前类。
要实例化一个类必须调用它的构造方法。
构造方法用来创建对象,并且可以再构造函数中对对象进行初始化。
构造函数式用来创建对象的特殊方法,方法名和类名一样,都没有返回值,连void都不用。
构造函数可以重载,也就是可以有多个参数不同的构造函数。
析构函数:最后一个执行就意味着这个程序即将结束 ,一般用来手动释放资源。
params:在数组前面加params传参数的时候可以返回数组中的元素 系统会自动给你组成数组。
可变数组作为参数的时候必须作为最后一位。
命名空间:
namespace(命名空间),用于解决类重名的问题,可以看做类的文件夹。
如果代码和被使用的类在一个namespace则不需要using。
在不同的命名空间下的类调用有2种方法:
写全称 命名空间。类名
先using 引用命名空间,在调用。
string :字符串可以看做一个char类型的数组它数只读的。
c#中字符串一旦声明就不再可以改变。所以只能透过索引器来读取指定位置的char,不能对指定位置的char进行修改。
如果要多char进行修改,那么就必须常见一个新的字符串,用s.ToCharArray()方法得到字符串的char数组,对数组进行修改后,条用new string (char[])这个构造函数来创建char数组的字符串,一旦字符串被创建,那么char数组 的修改也不会造成字符串的变化。
一个简单的改变数组元素的方法代码如下:
class Program
{
static void Main(string[] args)
{
string s = "hello,word!";
char[] chars = s.ToCharArray();
chars[0]='q';
s = new string(chars);
Console.WriteLine(s);
Console.ReadKey();
}
}
还要注意字符串比较式区分大小写的:举例代码如下:
class Program
{
static void Main(string[] args)
{
string courseA = "c#";
string courseB = "C#";
if (courseA == courseB)
{
Console.WriteLine("太好了你们都喜欢{0}", courseA);
}
else
{
Console.WriteLine("你们喜欢的课程不一样分别是{0},{1}", courseA, courseB);
}
Console.ReadKey();
}
}
结果是显示else里面的语句可见是区分大小写的。
遇到这样的情况有3种方法帮你解决;
1ToLower():得到字符串的小写形式;
注意 字符串是不可改变的,所以这些函数都不会直接改变字符串的内容,而是把修改后的字符串的值通过函数返回值的形式返回。
2 ToUpper();得到字符串的大写形式(这里经常用到Trim()去掉字符串两端的空白)
3 变量1.Equals(变量2,String Comparision.Ordinallgnorecase),
字符串进行比较不区分大小写。
字符串的分割:
string[] Split (params char[] separator ):将字符串按照指定的分隔符分割为字符串数组。
简单举例:
class Program
{
static void Main(string[] args)
{
string name = "my name is lisi";
string[] names = name.Split(' ');
Console.WriteLine("这个个数组有{0}", names.Length);
Console.WriteLine("它们分别是");
for (int i = 0; i < names.Length; i++)
{
Console.WriteLine(names[i]);
}
Console.ReadKey();
}
}
string[] Split (char[] separator, String SplitOptions):
将 字符串按照指定的char分隔符分割为字符串数组当Options取
RemoveEmptyEntries的时候移除结果中的空白字符串。
举例 如下:
static void Main(string[] args)
{
//注意字符串分割时最后一个标点会返回个空格就是多一个字符
//还有就是多个空格怎么解决
string name = "my name,is lisi!";
//定义一个char数组接收要分割的标点
char [] nameChar = { ' ', ',', '!' };
string[] names = name.Split(nameChar, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < names.Length; i++)
{
Console.WriteLine(names[i]);
}
Console.ReadKey();
}
这就是字符串分割的基本用法。
练习题 让用户输入一个日期格式例子2008/05/11或者2008-05-11显示出用户输入的是2008年05月11日
static void Main(string[] args)
{
Console.WriteLine(" 请输入一个日期格式例子2008-05-11或者2008/05/11");
string date = Console.ReadLine();
char[] datechar = { '-', '/' };
string[] stringDate = date.Split(datechar, StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine("您刚刚输入的是{0}年{1}月{2}日", stringDate[0], stringDate[1], stringDate[2]);
Console.ReadKey();
}