1、注释(不写注释是流氓,名字瞎起是扯淡) ‘///’一般用于注释函数,注释类。 2、快捷键 ctrl+k+d(有语法错误无法进行对齐) ctrl+j(快速弹出只能提示) shift+end,shift+home 键从行首到行尾,从行尾到行首; ctrl+k+c 注释 ctrl+k+u取消注释 alt+shift+f10 打开说明引用空间。 f1转到msdn f12转到定义
3、数据类型 decimal money=5000m;(金钱类型) String 和string在c#中都一样。String是.net平台中共用类型,string是c#中专有的,它们两个都会映射到System.class类中。 4、命名规范 *1、Camel命名规范(多用于变量命名):首单词首字母小写,其余单词首字母大写。 *2、Pascal命名规范(多用于类或者方法命名):所有单词首字母大写。 5、占位符 使用方法:先挖个坑,再填个坑。 Console.WriteLine("..{0},...{1},...{2}",n1,n2,n3); 6、转义符 \n:换行,但是在windows系统中不认识\n,只认识\r\n; \":输出半角引号 \t:tab键(排版) \b:退格,首尾放置无效,只是退格一个。 @:1、取消\在字符串中的转义作用。2、保留原格式输出。 7、枚举 =====枚举与int和string之间转换=== @1、枚举类型默认可以和int类型相互转换 枚举类型跟int是兼容的 @2、枚举类型转换成string,用toString(); 枚举类型 对象名 =(枚举类型)Enum.Parse(typeof(枚举名),string s); 8、属性 惯用法:属性开头字母大写,字段开头字母小写。
class Person { private int age;
public int Age { set { this.age=value; } get { return this.age; }
} 9、c#中无全局变量一说,只能用静态字段来模拟全局变量。 10、c#中三大参数 1)out参数: 如果在一个方法中返回多个相同类型的值的时候,可以考虑返回一个数组。 但是返回多个不同类型的值时就需用out。out既可以返回多个相同值也可以返回多个不同值。 其实out作用就是:返回被调用函数的多个值。与一般返回方向是相反的。 注意:out定义变量必须在被调用函数中赋值。 2)ref参数: 能够将一个变量带入一个方法中改变,改变完成后,再将改变后的值带出方法。
main() { int s=10; Test(ref s);
} Test(ref s1) { s1+=3 } 3)parame参数: 可变参数 将实参列表中与可变参数数组中类型一致的类型当作数组的元素。既实参可以不用声明数组。 main { test(“为”,34,389,34); } test(string name,params int[] score) { } 11、方法的重载和返回值无关,至于方法名、参数类型、个数有关。 12、静态与非静态的区别 1)、在非静态类中,既可以有实例成员,也可以静态方法。静态类中只能出现静态成员。 2)、在调用实例成员时候,需要使用对象名.实例成员; 在调用静态成员的时候,需要类名.静态方法。 总结:静态成员必须使用类名去调用,实例成员用对象去调用。 静态函数中只能访问静态成员,不允许访问实例成员。 实例方法既可以使用静态成员,也可以使用实例成员。 静态类中只能出现静态成员。静态类无法实例化。 使用: 1)、如果你想要你的类当做一个“工具类”去使用,这个时候可以考虑写成静态的类 2)、静态类在整个项目资源共享。静态类是占内存的。 GC Garbage Collection 垃圾回收器。 13、构造函数 作用:帮助我们初始化对象,构造函数是一个特殊的方法。 1)构造函数没有返回值,连void也没有 2)构造函数的名称必须和类名一样。 14、new 1)在内存中开辟一块空间; 2)再开辟的空间中创建对象; 3)调用对象的构造函数初始化对象。 构造函数必须是public。 15、this 1)代表当前类的对象。 2)在类当中显式调用本类的构造函数 :this 16、在一个项目中引用另一个项目的类 1)、先引用项目 2)、引用另一个项目的命名空间。 17、值类型和引用类型 区别: 1、值类型和引用类型在内存上存储的地方不一样 2、在传递值类型和传递引用类型的时候传递的方式不一样。 值类型我们称之值传递,引用类型我们称之为引用传递。
值类型:int 、double、char、bool、decimal、struct、enum 引用类型:string、自定义类 存储: 值类型存储在内存的栈中。 引用类型存储在内存的堆中。 18、字符串 1)、字符串的不可变性,如果字符串被重新赋值,老值并不删除,而是在栈中将老的 地址删除,重新给字符串赋予新的地址值。 当程序结束后,GC扫描整个内存,如果发现有的空间没有指向,则立即销毁。 2)、可以将string类型看作是char类型的只读数组。 例: string s="abcde"; //S[0]='B';不能这么做,因为是只读的 //如果改变的话,首先需进行对string的转换。 char []chs=s.ToCharArray(); //将字符数组转换成我们的字符串 s=new string(chs); Console.WriteLine(s[0]); 19、StringBuilder 当字符串进行大量的循环累加时,会进行大量的开辟新的内存空间,比较慢。 计时:Stopwatch Start(); Stop(); Stopwatch.Elapsed //记录运行的总时间。 StringBuilder.Append(i);追加方式进行累加。 StringBuilder会节省很大时间,原因在于它不开辟新空间,然后再将StringBuilder转换为String 20、字符串方法 1)、Length() 2)、ToUpper() 3)、ToLower() 4)Equals(str1,StringComparision.OrdinalIgnoreCase):比较两个字符串是否一致 ,并忽略大小写。 5)、Splite(字符数组,StringSplitOptions.RemoveEmptyEntries),则将字符数组内容删除,并且不返回空数组和null。 6)、Contains() 7)、Replace(str1,str2) 8)、string.Substring(); 9)、string.StartWith()/EndWith() 10)、string.indexof()返回int类型,返回字符串首先出现的位置 11)、string.LastIndexof()最后一个字符串出现的位置。 12)、string.trim()移除字符串中所有空格。string.trimStart()/trimEnd(); 13)、string.IsNullOrEmpty() 14)、string.Join();能够将指定的分隔符加入到数组中进行分割。
|
请发表评论