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(); } }