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()数组的排序