1.所有C#代码文件都使用.cs文件扩展名。
2.Console.ReadLine()命令生成的是一个字符串。
3.运算符优先级:++i,--i高于i++,i--。
4.在未知循环次数的情况下,一般使用do...while或while循环。
5.使用goto语句退出循环是合法的,但使用goto语句从外部进入循环是非法的。
6.拒绝某一范围的数输入时,可用do...while循环。
7.定义动态数组的方法:int [] a = new int [n]。
8.集合:特点,长度可以任意改变,类型随便。 ArrayList list = new ArrayList();
9.Foreach循环与for循环的区别:foreach循环对数组内容只进行可读访问,所以不能改变任何元素的值。
10.type.Parse(a):将数字a的字符串表示形式转换为它的等效32位有符号整数。
11.type.TryParse(a):将数字a的字符串表示形式转换为它的等效32位有符号整数。一个指示转换是否成功的返回值(true or false)。
12.String 类型变量可以看成是char变量的只读数组。
13.字符串的几个操作函数:
<string>.ToLower()和<string>.ToUpper(),分别把字符串转换为小写形式或大写形式。
‚<string>.TrimStart()和<string>.TrimEnd(),分别把字符串前面或后面的空格删掉。
ƒ<string>.PadLeft()和<string>.Padright(),分别在字符串的左边或右边添加空格,使字符串达到指定的长度。
④string.Join():将指定的字符插入在字符串中;
例:string str =string.Join(“|”,new string[]{“1”,”2”,”3”}); 结果为:str =1|2|3
13.有返回值类型的函数,所有处理路径都必须执行到return语句,大多数情况下,编译器会检查是否执行到return语句,如果没有,就给出一个错误“并不是所有的处理路径都返回一个值”。
14.参数数组:参数数组允许使用个数不定的参数调用函数,可使用params关键字定义它们,且只能指定一个,且是函数定义中的最后一个参数。
15.输出函数:out +...
例:利用输入函数,输出某数组中的最大值:
Static int MaxValue(int[]intArray,out int maxIndex){
Int maxVal = intArray[0];
maxIndex = 0;
for(int i=1;i<intArray.Length;i++)
{
If(intArray[i]>maxVal)
{
maxVal=intArray[i];
maxIndex = i;
}
}
Return maxVal;
}
采用下方式使用函数:
int []myArray={1,8,3,6,2,5,9,3,0,2};
Int maxIndex;
Console.WriteLine(“The maximumvalue in myArray is {0}”,MaxValue(myArray,out maxIndex));Console.WriteLine(“Thefirst occurrence of this value is at element{0}”,maxIndex+1);
结果如下:
The maximum value in myArray is9
The first occurrence of thisvalue is at element 7;
例2:
class Myclass
{ public void MaxMinArray ( int[] a, out intmax,out int min, out int avg )
{ int sum;
sum=max=min=a[0];
for (int i=1; i<a.Length; i++)
{ if ( a[i]>max) max=a[i];
if ( a[i]<min ) min=a[i];
sum += a[i];
}
avg=sum / a.Length;
} }
class Test
{ public static void Main()
{ Myclass m=new Myclass ();
int [] score={87,89,56,90,100,75,64,45,80,84};
int smax,smin; double savg;
m.MaxMinArray (score, out smax, outsmin, out savg);
Console.WriteLine (“Max={0}, Min={1}, Avg={2}”,
smax, smin, savg );
Console.Read();
} }
运行结果如下:
Max=100, Min=45, Avg=77
16.比较Js的substring、substr和C#的Substring:
Js的substring和C#的Substring的作用都是从一个字符串中截取出一个子字符串,但它们的使用方法却有很大的不同,下边我们来比较看看:
Js的substring
语法:
程序代码
String.substring(start, end)
说明:
返回一个从start开始到end(不包含end)的子字符串。
示例:
程序代码
var str="abcdefgh";
document.write(str.substring(0,1));//return:a
document.write(str.substring(2,5));//return:cde
document.write(str.substring(7,8));//return:h
C#的Substring
语法:
程序代码
String.Substring(int startIndex)
String.Substring(int startIndex,int length)
说明:
返回一个从startIndex开始到结束的子字符串,或返回一个从startIndex开始,长度为length的子字符串。
示例:
程序代码
string str ="abcdefgh";
Response.Write(str.Substring(0,1));//return:a
Response.Write(str.Substring(2,3));//return:cde
Response.Write(str.Substring(7,1));//return:h
Response.Write(str.Substring(7));//return:h
Response.Write(str.Substring(10));//error:startIndex不能大于字符串长度。
Response.Write(str.Substring(7,10));//error:索引和长度必须引用该字符串内的位置。
经过上边的说明对它们的使用应该有个比较清楚的认识了,但对Js的substring还有几点要说明:
1.start不一定就是第一个参数,end也不一定就是第二个参数,substring(3,1)时,开始位置是1,结束位置是3;
2.当要返回的子字符串是从开始位置到结束时,end的值必须大于字符串的长度(即大于或等于字符串的索引),如上边的str.substring(7,8),按照索引从0开始算的话end的最大值为7,但这边却用8,当然,使用大于8的数返回的结果也是一样的,这点比较有意思;
js的Substr
语法:
程序代码
stringObject.substr(start,length)
说明:
在字符串中抽取从 start 下标开始的指定数目的字符。
start 必需。要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推。
length 可选。子串中的字符数。必须是数值。如果省略了该参数,那么返回从 stringObject 的开始位置到结尾的字串。
示例:
程序代码
<script type="text/javascript">var str="Hello world!" document.write(str.substr(3)) </script>输出:
lo world
17.常用快捷键:
Home:光标转到行首
End:光标转到行尾
PgUp: 翻到上一页
PgDn:翻到下一页
Ctrl+Home:光标转到文首
Ctrl+End:光标转到文末
Ctrl+K+D:快速对齐代码
Ctrl+J:快速弹出智能提示
Ctrl+K+C:注释所选代码
Ctrl+K+U:取消对所选代码的注释
F1:转到帮助文档
Shift+Home:选中光标位置到行首的部分
Shift+End:选中光标位置到行尾的部分。
18.#region和#endregion用于折叠一段代码。
19.保留小数点的方法:
例: double a=0.395333;
double b=a-0.005;
Console.writeline(b.ToString(“0.00”));
20.数组名字是数组首元素的内存地址。
数组名是一个常量,不能被赋值。
21.数组作为方法的参数:void ModifyScore ( double [ ] b);
22.如何交换变量 ab 的值,不使用第三方变量:a=a+b;b=a-b;a=a-b;
23.几个常用转义符:\n表示换行,\b表示退格,\t表示tab键(有多个空格组成的一个字符,具有行与行之间的对齐功能)。
24.在字符串前面加一个@符号有两种表示意义:
1)字符串中如果有\,则不再理解为转义符;
2)使字符串可以换行。
25.会丢失精度的强制类型转换:(数据类型名)待转换的值。如:int b=(int)3.14
26.c#中异常捕获如何来完成:
try
{
有可能出现错误的代码写在这里。
}
catch
{
出错后的处理。
}
上面的程序如何执行:
如果try中的代码没有出错,则程序正常运行try中的内容后不会执行catch中的内容
27.枚举:让我们定义一种枚举类型并且在定义这种类型时我们要指定这个类型的所有值。用于规范团队开发
语法:
enum:自己起的类型名称{值1,值2,.....}
枚举的定义一般和类定义在同一个级别。这样,在同一个命名空间下,所有的类就都可以使用这个枚举了。
作用:1)限制用户不能随意赋值,只能在定义枚举时列举的值中选择。
2)不需要死记每一个值是什么,只需要选择相应的值
注意:定义枚举时,值不能是int类型。
如何把一个字符串转换成枚举类型:
(自己定义的枚举类型名)(Enum.Parse(typeof(自己定义的枚举类型名)),”待转换的字符串”);
28.Console.clear(),用于清屏。
29.判断是否为某个类型的数,不是则循环的例子。
public static int ReadInt()
{
intnumber = 0;
do
{
try
{
number = Convert.ToInt32(Console.ReadLine());
return number;
}
catch (Exception)
{
Console.WriteLine("输入有误,请重新输入!");
}
}while (true);
}
static void Main(string[] args)
{
Console.WriteLine("请输入一个实数");
a =ReadDouble();
}
30.一个变量一旦定义在方法外,类的里面,就叫做类的字段,这个变量就可以被本类的所有方法所访问,但是要注意,静态方法只能访问静态字段。
31.由const修饰的常量不能定义静态的
32.ref参数:能够将一个变量带入一个方法中进行改变,改变完成后,再将改变后的值带出方法。
33.在方法的参数类型前加out,那么传参数的时候,也必须在变量加out表明这个参数不是传入的,而是用来传出值的。
33.int、datetime、bool、char等类型都属于值类型(ValueType),赋值的时候传递拷贝。普通的对象则是引用类型,赋值的时候是传递引用。
34.params:当用户在参数数组的前面加params修饰时,该参数会变成可变参数(即,用户可以传入任意个数的参数,系统自动将其转为一个数组)
注意:可变数组在作为参数的时候,必须只能作为最后一个参数。
35.不在同一个命名空间下的类,不能被直接访问。要想访问别的命名空间下的类有两种方法:
1)通过using引用对方的命名空间。
2)写全称:命名空间名.类名
36.internal关键字是类型和类型的成员 访问修饰符。只有在同一程序集的文件中,内部类型或成员才是可访问的
37.Partial 部分类 , 允许我们把一个类放在多个文件中。
38. button属性:
BackgroundImagelayout:背景图片的显示样式。
Cursor:鼠标进入的显示样子。
39.MouseMove:当鼠标在控件上移动时不断地触发。
40.窗体属性:
Icon:窗体左上角的图标。
Opacity:透明度
TopMost:窗体保持在最前端。
WindowState:指示窗体是最大化还是最小化还是正常。
Activated:窗体获得焦点时触发。
Deactivate:窗体失去焦点时触发。
41.Selectionstart : 如果是选中一段文本,则为起始位置。如果没有选中,则只是光标位置。注意,第一个位置为0。
42.byte[]与char[[]与string之间的互相转换
bytearray -> char array
Byte[] b=newbyte[5]{0x01,0x02,0x03,0x04,0x05};
Char[]c=Encoding.ASCII.GetChars(b);
43.privatevoid button1_click(object sender,….){}//sender表示被触发的事件的控件的对象
44.无论是子窗口向主窗口传值还是子窗口向主窗口传值,都是通过属性
45.三元表达式:
语法:
表达式1?表达式2:表达式3;
表达式1一般为一个关系型表达式。
如果表达式1的值为true,那么表达式2的值就是整个三元表达式的值
如果表达式1的值为false,那么表达式3的值就是整个三元表达式的值。
注意:表达式2的结果类型必须与表达式3的结果类型一致,并且也要跟整个三元表达式的结果类型一致。
46.命名规则
Camel:用于给变量命名,由好几个单词组成时,首个单词的首字母小写,其余的单词的首字母大写
Pascal:用于类和方法的命名;每个单词的首字母都必须大写。
47.里氏转换:
(1)子类可以赋值给父类。
(2)如果父类中装的是子类的对象,那么可以将这个父类的对象强制转换为子类的对象。
48.IO操作:
System.IO.File类:Copy复制文件;Exists文件是否存在;
49.委托(delegate)的最主要用途是向一些已经存在的方法中动态注入一段程序代码。
50.常用Lambda表达式的书写形式:
(int a,int b) =>{return a+b };
(int a,int b)=> a + b;
(a,b) =>{return a+b };
(a,b) => a +b;
(x) => sum +=x;
x => sum +=x;当只有一个形式参数时,括号可以省略。
() => sum +1;当没有形式参数时,括号不能省略。
51.DataTable的使用方法:
DataTable table = new DataTable();//先创建表
table.Columns.Add("id");添加列()中为列名
table.Columns.Add("ISBN");
DataRowdr = table.NewRow();//创建行。
dr["id"] = book.Id; //行中对应的列
dr["ISBN"] = book.ISBN;
table.Rows.Add(dr);//将行添加到表格中