1.内置引用类型
object(System.Object) string(System.String) dynamic(System.Dynamic)
object o = new object();或者是object o2 = new Object();//大小写都可以
Console.WriteLine(o.GetType()); //GetType方法
Console.WriteLine(o.ToString()); //ToString方法
string s = "hahaha";
string s2 = "haha";
s2 += "ha";
string s3 = "hei";
s3 += "heihei";//字符串的加法
Console.WriteLine(s);//输出s
Console.WriteLine(s2);//输出s2
Console.WriteLine(s3);//输出s3
Console.WriteLine(s == s2);//判断字符串是否相等
Console.WriteLine((object)s == (object)s2);//判断字符串对应的object对象是否相等
char c = s[0];//获取字符串的字符
Console.WriteLine(c);//输出字符串的字符
string s4 = "\\\u0066\n";//"\\"是"\","\u0066"是"f","\n"是"回车"
Console.WriteLine(s4);//输出s4
string at = @"\u0066\n";//@符号的作用
string at2 = "\\u0066\\n";//此句等同于上句,\具有取消转义的功能
Console.WriteLine(at);
Console.WriteLine(at2);
StringBuilder sb = new StringBuilder();//如果经常要对字符串进行操作,那么就要用StringBuilder了,节省内存
sb.Append("haha");//Append()方法
sb.Append("ha");
Console.WriteLine(sb);
StringBuilder sb2 = new StringBuilder();
sb2.AppendFormat("{0}{1}", "haha","ha");//AppendFormat()方法
Console.WriteLine(sb2);
Console.ReadLine();
2.class
class Program
{
static void Main(string[] args)
{
var person = new Person(5);//实例化一个class是要通过它的构造函数来实现的,它的构造函数又是默认的(被隐藏),如下
Console.WriteLine(person.GetAge());//方法的调用,用实例化class后,用实例直接调用方法
Console.WriteLine(Person.GetOne());//静态方法的调用,直接用类名点调用即可
Console.WriteLine(person.Age);//属性的获值,因为属性中有get方法
person.Age = 10;//属性的赋值,因为属性中有set方法
Console.WriteLine(person.Age);//再次调用属性
Console.WriteLine(person.GetAge());//验证age现在为多少
Console.ReadLine();
}
}
class Person
{
/*每一个class都带有默认的构造函数
*构造函数就长下面这个样子:类名就是其方法名
*public Person(){
*}
*/
//属性
public Person(int myage)
{
this.age = myage;//因为是在本类中,此处this可以被省略
}
int age;//这是成员变量,和下面的属性长得很像哦
public int Age//这是属性
{
get {
return age + 10;
}
set {
age = value - 10;
}
}
public int GetAge()//没有修饰符的话就会用默认的修饰符private,这样在其它类中就访问不到这个方法了
{
return age;
}
public static int GetOne()
{
return 1;
}
}
3.Interface
只能包含属性、方法、索引、事件,而class不仅可以包含上述,还可以包含成员变量、构造方法等等等等
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
var person = new Person(5);//实例化一个class是要通过它的构造函数来实现的,它的构造函数又是默认的(被隐藏),如下
Console.WriteLine(person.GetAge());//方法的调用,用实例化class后,用实例直接调用方法
Console.WriteLine(Person.GetOne());//静态方法的调用,直接用类名点调用即可
Console.WriteLine(person.Age);//属性的获值,因为属性中有get方法
person.Age = 10;//属性的赋值,因为属性中有set方法
Console.WriteLine(person.Age);//再次调用属性
Console.WriteLine(person.GetAge());//验证age现在为多少
Console.ReadLine();
}
}
class Person : Man,ISuper//类可以继承一个类,可以实现多个接口,类是实现,接口是继承
{
/*每一个class都带有默认的构造函数
*构造函数就长下面这个样子:类名就是其方法名
*public Person(){
*}
*/
//属性
public Person(int myage)
{
this.age = myage;//因为是在本类中,此处this可以被省略
}
int age;//这是成员变量,和下面的属性长得很像哦
public int Age//这是属性
{
get {
return age + 10;
}
set {
age = value - 10;
}
}
public int GetAge()//没有修饰符的话就会用默认的修饰符private,这样在其它类中就访问不到这个方法了
{
return age;
}
public static int GetOne()
{
return 1;
}
public override int getAbstruct()//如果一个类继承了一个抽象类,那么这个类就要实现这个抽象类中的抽象方法
{
return 50;
}
public int GetSuper()//如果一个类继承了一个接口,那么这个类就要实现接口里面的方法
{
return age + 100;
}
}
abstract class Man//抽象类不能实例化,抽象类不能实例化,抽象类不能实例化
{
public string name;//抽象类中包含成员变量
public string getName()//抽象类中可以包含不抽象的方法
{
return name;
}
public abstract int getAbstruct();//这是抽象的方法
}
interface ISuper
{
int GetSuper();
}
}