C#基础笔记1
一个有趣的两数交换
int i = 10; int j = 20; i = j +( j = i ) * 0;
这里, 输出结果为:i = 20 ; j = 10;
首先 明确一个概念,赋值运算是从右到左执行。所以,此处会先执行 i = 右边的运算
即 j + ( j = i ) * 0 ; 此处,从左到右执行,先读取到 j ,并把 j 相应的数值进栈 20 进栈。
进栈以后,发现有小括号,即执行小括号里面的运算,把 i 的值赋给 j 。
此处, j 就是 i 原来的数值 10 了,然而,一开始进栈的 j 的值并不是把 j 进栈,而是
其对应的值进栈,那么该值还是 20 ,所以,与( j = i )* 0 相加的值为20 , 将其赋给 i
则此时 i 的值为20 。就实现了数值的交换。
一些运算函数
string s = "1234"; int i = Convert.ToInt32(s);
//或者是下面这种写法
int i = int.Parse(s);
将数字字符串转换成整型;
double i = 10.0; double j = Math.sqrt(i);
double k = Math.Round(j,2);
将 i 开平方,然后把得到的值赋值给 j ;
k 取值为 j 的小数点后两位小数;
*快捷生成函数的组合键:
1.先写一个函数头 比如:
int i , j; private static void Method( i , j);
2.然后在函数后面按组合键shift + alt + F10 .
2.1或者按ctrl + . (此方法有可能被输入法占用,少用)
3.快速调试小程序:把光标定位到想要调试的程序的位置,使用ctrl + F10即可运行程序并定位到程序 调试的状态
冒泡排序
明确思路:
1.冒泡,是从下往上,两两比对筛选出最上面的数字的。
2.那么,我们外层循环就是总共比对的次数,为 n-1 次。
3.内层循环,从最下面的开始(每次都是)比对到 n- i (当前次数)
1 for(int i = 0 ; i < s.length - 1; i++) 2 { 3 for ( int j = s.length -1 ; j > i ; j --) 4 { 5 if ( arr[ j ] < arr[ j - 1] ) 6 7 {
int temp = arr[ j ]; 8 arr[ j ] = arr [j -1]; 9 arr[j - 1] = temp; 10 } 11 } 12 }
字符串处理
想要拼接字符串,使用 StringBuilder
str 为不同的字符串,Append (str) 就相当于在后面不断追加字符串。
最后,想要输出字符串,就把sb.ToString (); 用一个 string 型变量接走就可以了。
str.Trim(); 此函数可以去掉字符串两端的空格。
StringBuilder sb = new StringBuilder (); sb.Append (str) ; string aaa = sb.ToString(); aaa.Trim (); //去掉字符串两端的空格
但是,当你想要拼接的字符串如果需要翻转,这个StringBuilder 是不能做到翻转的。
我们需要用数组把字符串保存起来,使用List <string> ;list 集合。
List <string> li = new List <string> (); li.Add(str); li.Reverse (); //此处集合就可以实现翻转了。 //但仍然不是字符串 //首先,把该反转后的集合变成数组 Array[] arr = li.ToArray(); //然后,用空字符串""把集合中的对象串联起来 string str = string.Join("",arr);
//记一组判别是否为空格的函数 string str = " 1 2 3 "; char.IsWhiteSpace(str[i]);
str.Substring(a,b); // 从str 的索引a 截取长度 b;
1 string msg = " hello world ,你好 , 世界 ! "; 2 //先把两头空格去掉; 3 msg = msg.Trim(); 4 //再用split 方法将字符串中间的空格去掉 5 string[] str = msg.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); 6 //使用string.Join把字符串数组之间加空格并串联成一个字符串 7 Console.WriteLine(string.Join(" ", str));
浙公网安备 33010602011771号