前言
之前我们谈到了面向对象的基础知识,接下来,小编带大家更深入地了解一下类及其方法的内容,其中会涉及到一些具体的小知识。
类与函数
一、类的成员
包含了字段,属性和方法。如图所示
二、构造方法
1.作用:
用来创建对象,并且可以在构造函数中对对象进行初始化。
2.构造函数
(1)构造函数是用来创建对象的特殊方法,方法名和类名一样,没有返回值,连void都不用。
构造函数可以有参数,new对象的时候传递函数参数即可
(2)如果不指定构造函数,则类有一个默认的无参构造函数。如果指定了构造函数,则不再有默认的无参构造函数,如果需要无参构造函数,则需要自己来写。
(3)构造函数可以重载,也就是有多个参数不同的构造函数。
函数中的参数out与ref
一、ref的认识
1.ref 关键字使参数按引用传递
(1)当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。
(2)要使用 ref 参数,方法定义和调用方法都必须显式使用 ref 关键字。
(3)例如:
class RefExample
{
static void Method(ref int i)
{
i = 44;
}
static void Main()
{
int val = 0;//传递到 ref 参数的参数必须最先初始化
Method(ref val);
// val is now 44
}
二、out的理解
1.out 关键字会导致参数通过引用来传递。
(1)不同之处在于 ref 要求变量必须在传递之前进行初始化。
(2)若要使用 out 参数,方法定义和调用方法都必须显示使用 out 关键字。
2.举例说明
class OutExample
{
static void Method(out int i)
{
i = 44;
}
static void Main()
{
int value;//不必进行初始化变量
Method(out value);
//调用方法以便在方法返回之前赋值。
// value is now 44 }
}
三、两者的联系和区别
1.在运行时的处理方式不同,如上所示。
2.在编译时的处理方式是相同的。
(1)如果一个方法采用 ref 参数,而另一个方法采用 out 参数,则无法重载这两个方法。例如,从编译的角度来看,以下代码中的两个方法是完全相同的,因此将不会编译以下代码:
class CS0663_Example //报错的一种情况
{
// compiler error CS0663: "cannot define overloaded
// methods that differ only on ref and out"
public void SampleMethod(ref int i) { }
public void SampleMethod(out int i) { }
}
(2)如果一个方法采用 ref 或 out 参数,而另一个方法不采用这两个参数,则可以进行重载,如下例所示:
class RefOutOverloadExample
{
public void SampleMethod(int i) { }
public void SampleMethod(ref int i) { }
}
字符串函数
一、常用函数
1.字符串替换:
string Replace(string oldValue, string newValue)将字符串中的出现oldValue的地方替换为newValue。
例子:名字替换。
2.取子字符串:
string Substring(int startIndex),取从位置startIndex开始一直到最后的子字符串;
string Substring(int startIndex, int length),取从位置startIndex开始长度为length的子字符串,如果子字符串的长度不足length则报错。
二、返回值为布尔类型
1.bool Contains(string value)判断字符串中是否含有子串value2.bool StartsWith(string value)判断字符串是否以子串value开始;
3.bool EndsWith (string value)判断字符串是否以子串value结束;
4.int IndexOf(string value):取子串value第一次出现的位置。
5.Int IndexOf(string value,int startIndex)
小结
关于类似的函数知识,还有很多,需要不断地去了解和实践。