1、struct与class区别
结构体是一种值类型,而类是引用类型
比较内容 | 结构 | 类 |
构造函数 | 支持(不能自定义,默认提供,作用是将所有的数据成员置零) | 支持(能自定义) |
析构函数 | 不支持 | 支持 |
变量初始化 | 不支持(private int num = 50 是错误的) | 支持 |
继承 | 不支持(sealed类型) | 支持 |
接口 | 可以实现多个接口 | 可以实现多个接口 |
特性 | 支持 | 支持 |
属性 | 支持 | 支持 |
方法 | 支持 | 支持 |
类型 | 值类型 | 引用类型 |
2、override和重载的区别
重载是方法的名称相同,参数或者参数类型不同,达到同名的方法实现不同的功能。
override重写基类的一个方法,加入了override的方法,此方法始终只有一个被你使用的方法。
这个区别就好像:override就好像 你叫张三,你爸爸给修改了名字为李四...
重载就好像 你叫张三,但是别人也可以叫张三..
override是把继承于父类的方法给覆盖掉
重载是同一个函数名接受不同类型、个数的参数,完成不同的功能,调用起来方便
2、c#如何判断一个字符串为空或者空串
五种常用法:
Length法:bool isEmpty1 = (str != null && str.Length == 0);
Empty法:bool isEmpty2 = (str == String.Empty);
General法:bool isEmpty3 = (str == "");
string.IsNullOrEmpty法:bool isEmpty4 = string.IsNullOrEmpty(str);
str.Equals法:bool isEmpty5 = (str != null && str.Equals(""));
方法一
if (str != null && str.Length == 0)
{
Console.Write("str is empty");
Console.ReadLine();
}
4、string s=new string("xyz") 创建了几个stringObject
String s=new String("xyz")
创建两个对象,引用对象s,字符串对象"xyz";
String s1=new String("xyz") String s=new String("xyz")
两个引用对象s1、s,两个内容相同的字符串对象"xyz",它们在内存中的地址是不同的。
记住,凡是用new生成的总是新对象。
String s1 = "xyz" ;String s = "xyz";
如果像上面这样写,s1、s引用的才是同一个常量池中的对象。
5、abstract,class,interface的区别
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),只能单继承
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。可多继承
接口是包含一组虚方法的抽象类型,其中每一种方法都有其名称、参数和返回值。
接口内的方法不能实现,需要继承的类来具体实现其方法,
而抽象类中的方法可以被具体实现,并且继承的类可以重写其方法。