首页 > 代码库 > 零散知识点

零散知识点

1.引用传递参数ref

        static void Main(string[] args)        {            int n1 = 10, n2 = 20;            Swap(ref n1,ref n2);            Console.WriteLine("n1={0},n2={1}",n1,n2);            Console.ReadKey();        }        private static void Swap(ref int n1, ref int n2)        {            int temp = n1;            n1 = n2;            n2 = temp;        }

 

 

 
2.字符串的Length属性表示字符串中的字符数,无论中英文还是符号。区分于字节数。
 
3.可变参数、数组求最大值
        static void Main(string[] args)
        {
            //4.用方法来实现:计算两个数的最大值。思考:方法的参数?返回值?扩展(*):计算任意多个数间的最大值(提示:params)。
            int max=GetMaxValue(1, 2, 3, 4);
            Console.WriteLine(max);
            Console.ReadKey();
           
        }
        static int GetMaxValue(params int[] nums)
        {
            //对数组中的元素求最大值
            int max=nums[0];
            for (int i = 1; i < nums.Length; i++)
            {
                if(nums[i]>max)
                {
                    max=nums[i];
                }
            }
            return max;
        }
4.shift+alt+F10 写一个没有定义的函数可以直接生成这个函数
 
5.质数的判断
一个数是小数乘以大数,或者是两个相同的数相乘。所以为了减少循环次数,对需要判断是否为指数的数开方去整,以此作为循环的边界。
将:
                for (int i = 2; i < n; i++)
                {
                    if (n % i == 0)
                        return false;
                }
                return true;
改为(注意不要漏掉小于等于号):
 
                for (int i = 2; i <=Math.Sqrt(n) ; i++)
                {
                    if (n % i == 0)
                        return false;
                }
                return true;
 
6.返回名字最长的
        static void Main(string[] args)
        {
            string[] name = { "马龙", "迈克尔乔丹", "雷吉米勒", "蒂姆邓肯", "科比布莱恩特" };
            string userName = GetLongestName(name);
            Console.WriteLine(userName);
            Console.ReadKey();
        }
        private static string GetLongestName(string[] name)
        {
            string longName = name[0];
            for (int i = 1; i < name.Length; i++)
            {
                if (name[i].Length > longName.Length)
                    longName = name[i];
            }
            return longName;
        }
 
7.Math.Round(数,精度) 四舍五入
 
 
foreach循环遍历数组
 
8.拼接字符串用StringBulider
 
9.List<>
            List<string> list = new List<string>();//集合
            while (num >= 2)
            {
                //商
                int shang = num / 2;
                int yushu = num % 2;
                list.Add(yushu.ToString());
                num = shang;
            }
            list.Add(num.ToString());
            list.Reverse();//集合反转
            return string.Join("", list.ToArray());//用空字符串拼接集合成字符串
10.Random()函数实例化不能放在循环内,
            Random random = new Random(); //使用系统时间作为种子
            for (int i = 0; i < 10; i++) //产生一组随机序列
            {
                Console.WriteLine(random.Next(1, 100));
            }
 
            
            for (int i = 0; i < 10; i++)
            {
                Random random = new Random(); //使用系统时间作为种子
                Console.WriteLine(random.Next(1, 100)); //产生一个随机数,而不是一组序列,因为运算速度很快,所以在一定时间内,同样的种子所产生的随机序列的第一个数字总是相同的
            }
 
 
11.indexof()该方法返回在整个字符串中,指定的字符或字符串第一次出现的索引位置,未找到返回-1,
            string msg = "患者:“大夫,我咳嗽得很重。” 大夫:“你多大年记?” 患者:“七十五岁。” 大夫:“二十岁咳嗽吗”患者:“不咳嗽。” 大夫:“四十岁时咳嗽吗?” 患者:“也不咳嗽。” 大夫:“那现在不咳嗽,还要等到什么时咳嗽?”";
            int count = 0;
            int index = 0;//记录索引
            string word="咳嗽";
            while((index=msg.IndexOf(word,index))!=-1)
           
                count++;
                Console.WriteLine("第{0}次出现【咳嗽】,出现的索引位置是{1}", count, index);
                //下次查找的时候要从上一次找到的【咳嗽】的索引位置加上"咳嗽"这个字符串的length
                index += word.Length;
            }
            Console.ReadKey();
12.split()
            //将字符串" hello world,你 好 世界 ! "两端空格去掉,并且将其中的所有其他空格都替换成一个空格,输出结果为:"hello world,你 好 世界 !"。
            string msg = " hello world,你 好 世界 ! ";
            msg = msg.Trim();
            string[] result = msg.Split(new char[] { ‘ ‘ }, StringSplitOptions.RemoveEmptyEntries);
            Console.WriteLine(string.Join(" ", result));
            Console.ReadKey();
13.断点调试 )
F9 F5 F10 F11 ,CTRL+F10直接从光标位置设置断点开始调试,可以对变量添加监视,或者鼠标移到变量上即可
 
14.输入 cw敲两下Tab即出Console.WriteLine();输入switch敲两下Tab同样出Switch的框架,节省打代码时间
 
15.Ctrl+k+C注释,Ctrl+K+U取消注释 整理VS使用技巧
 
16.把char数组变成string类型 
char[] chs;
string s=new string(chs)
 
17.ctrl+r+e 自动封装属性
把类中属性 :       private double _salary;
封装成:
        private double _salary;
        public double Salary
        {
            get { return _salary; }
            set { _salary = value; }
        }
18.重写类方法override+方法名
        public override void SayHi()
        {
            Console.WriteLine("HI~~~~in Employee");
        }
 
19.索引器
索引器格式:                                                    public int this[int index]{get{}set{}}
如果索引器要重载的话要定义成object              public object this[]{...}
索引器的目的是为了方便,可以在该类型的对象后面直接加一对中括号[]就能访问类型中的成员内容了
索引器最终编译的时候会生成一个名字叫Item的属性
 
 //20.请编写一个类:ItcastClass,该类中有一个私有字段_names,数据类型为:字符串数组,长度为5,并且有5个默认的姓名。要求:为ItcastClass类编写一个索引器,要求该索引器能够通过下标来访问_names中的内容。
类:
    public class ItcastClass
    {
        private string[] _names = { "张三", "李四", "王五", "六六", "七七" };
        public string this[int index]
        {
            get
            {
                return _names[index];
            }
            set
            {
                _names[index] = value;
            }
        }
        public int Length
        {
            get { return _names.Length; }
        }
    }
主函数:
        static void Main(string[] args)
        {
            ItcastClass ic = new ItcastClass();
            for (int i = 0; i < ic.Length; i++)
            {
                Console.WriteLine(ic[i]);
            }
            Console.ReadKey();
        }
 
20.char.
char.isdigit 判断是否数字
char.isLetter 是否字母
char.isWhiteSpaca 空格符
 
21.判断方法是否重载,只看亮点:1方法名必须一致,2参数必须不一致
 
 
22.数组的方法,Array.Reverse()数组的反转,Array.Sort()数组的排序