forked from hackerlank/note
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathC#_note
341 lines (213 loc) · 6.84 KB
/
C#_note
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
devenv
桌面应用程序 winform
internet应用程序 ASP.Net
手机开发 wp8
Unity3D 游戏开发
.Net FrameWork框架xxx
CLR(公共语言运行时)
.Net类库
.sln 解决方案文件
.csproj 项目文件
.cs 类文件
Main 函数是程序的主入口
Console.WriteLine('Hello World'); 在控制台输出文本
Console.ReadLine(); 控制台接收输入
Console.Readkey();
ctrl+K+d 快速对齐代码
ctrl+j 智能提示
ctrl+k+c 注释所选代码
ctrl+k+u 取消对所选代码的注释
F1 帮助
#region
#endregion
变量
int number; //定义int类型的变量
number = 100; //给变量赋值
bool //布尔值 false
byte //整数 0 8位无符号整数 0~255
char //字符 '\0' null U +0000 到 U + ffff
decimal //浮点 0.0M 128位精确的十进制 28-29有效位
double //浮点 0.0D 64位双精度 15-16有效位
float //浮点 0.0F 32位单精度 7有效位
int //整数 0 32位有符号整数
long //长整型 0L 64位有符号整数
sbyte //整数 0 8位有符号整数 -128~127
short //整数 0 16位有符号整数 -32768~32767
uint //整数 0 32位无符号整数
ulong //整数 0 64位无符号整数
ushort //整数 0 16位无符号整数
占位符
"{0} {1} {2:0.00}", 0, 1, 2
@ //不转义字符串 取消字符串里面的转移 \
int.valueMax
int.valueMin
var n = 123;
根据值来推断类型
n.GetType() //获取变量类型
类型转换
自动类型转换 小转大 隐式
显式类型装换 大转小 强制 (int)3.14
tip: int double
Convert.ToDouble()
Convert.ToInt32() 调用的 int.Parse()
int.TryParse("123", out number) //尝试建一个字符串转换成int类型 成功的话就给 number
n1.ToString() //所有类型都可以转换成字符串
(枚举名)Enum.Parse(typeof(枚举名), "0") //字符串转换成枚举类型
异常捕获
try{
会出现问题的代码
}
catch{
出现异常后要执行的代码
}
变量的作用域
声明变量的 块 {开始 }结束时就结束
断点调试
F11 单步调试
F10 逐步调试
断点调试 点击行号左边设置断点
常量
const 变量类型 变量值
枚举
[public] enum 枚举名
{
啊 = 1,
2,
3
}
枚举名.1
枚举类型默认可以跟int类型互相转换
结构 一次性声明多个不同类型的变量
[public] struct 结构名{
public string _name; //字段 前面加下划线
public int _age;
}
结构名 zs结构名;
zs结构名.name = "啊";
数组 存储类型相同的变量
数组类型[] 数组名 = new 数组类型[数组长度];
数组的长度一旦固定了就不能改变了
int[] nums = new int[10];
nums.Length //数组长度
int[] numsTwo = {1, 2, 3, 4};
方法
static void 方法名(){
}
out 参数 在一个方法中返回多个类型不同的值
public static void test(int[] muns, out int max){
}
test(muns, out max);
ref 参数 引用传值
public static void test(ref max){}
test(ref max)
params 可变参数
public static void test(str max, params int[] score){}
test("啊", 1, 2, 3) //要跟定义的类型一致
重载 //方法的名称相同 参数不一样 或 参数的个数不同
修饰词
public 公开的
protected 保护的
private 私有的
面向对象
类
public class 类名{
public string _name; //字段
public void test(){} //方法
}
类名 newObj = new 类名()
//属性 给_name 的保护
public string Name(){
get {return _name;}
set {_name = value;}
}
静态 static
静态成员要用 类名.成员
静态方法不能使用静态成员
实例方法可以使用静态成员
静态类不能被实例化
静态类中只允许出现静态成员
构造函数
构造函数没有返回值
和类名一样
可以重载
public 类名(int a, int v):this(a, v){
}
析构函数
~类名(){}
继承
public 类命:父类
子类并没有继承父类的构造函数, 子类会默认的调用父类无参数的构造函数 创建父类对象, 让子类可以使用父类中的成员
//调用父类的有参数 构造函数
子类构造函数(int a, char b):base(a, b){
}
里氏转换
子类可以赋值给父类
父类强转子类
(子类)父类对象;
if(对象 is 类名){
对象属于该类
}
对象 as 类名 失败返回 null
命名空间 类的文件夹
using //引入 命名空间 alt+shift+f10
namespace //定义命名空间 命名空间可以嵌套 使用.访问
值类型
int double bool char decimal struct enum
引用类型
string 自定义类 数组
字符串
char[] chas = s.tocharArray(); //把字符串转换为数组
s = new string(chas) //将字符数组转换为字符串
StringBuilder sb = new StringBuilder(); //拼接字符串
sb.Append(i);
sb.ToString();
s.Length //字符串长度
s.ToUpper() //大写
s.ToLower() //小写
s1.Equals(s2, type) //比较两个字符串
char[] chars = {' ', '-', ','};
s.Split(chas, type) //分割字符串
s.Replace("啊啊啊", "123") //替换字符串
s.SubString(0, 1)
s.Contains("123") //字符串中是否包含
s.StartsWith("123") //字符串开头
s.EndsWith("123") //字符串结束
s.InfdexOf('啊', 2) //字符串中字符首次出现的位置
s.LastIndexOf('啊') //最后一次
s.Trim(); //移出首尾" "字符
s.TrimStart() //首
s.TrimEnd() //尾
string.IsNullOrEmpty(s) //是否为空
string.Join("|", names) //把字符串数组 组合为字符串
Stopwatch sw = new Stopwatch() //计时器
sw.Stop(); //结束时间
//ArrayList 集合对象
ArrayList list = new ArrayList()
list.Add() //添加
list.AddRange() //添加集合元素
list.Count //集合长度 实际
list.Capacity //长度 可包含
list.Clear() //清空所有元素
list.Remove(true) //删除单个元素
list.RemoveAt(0) //删除指定下标
list.removeRange(0, 3) //根据下标移出范围
list.sort() //升序排序
list.Reverse() //反转
list.Insert(1, "啊") //在指定的下标 插入
list.InsertRange(0, new string[]{"",""}) //在指定的下标插入集合
list.Contains("a") //判断包含
//Hastable 键值对集合 字段
Hashtable ht = new Hashtable();
ht.Add(key, value);
ht.Count
ht.ContainsKey("abc") //是否包含
ht.Clear() //移出集合中所有的集合
foreach(var item in ht){
}
//路径
Path.GetFileName(str) //获取路径里的文件名
Path.GetFileNameWithoutExtension(str) //获取文件名不包含扩展名
Path.GetExtension(str) //获取扩展名
Path.GetDirectoryName(str) //文件夹的名称
Path.GetFullPath(str) //文件的全路径
Path.Combine(@"c:\a\", "b.txt") //合并两个路径