@@ -101,17 +101,12 @@ var bo = false;
101
101
102
102
/*
103
103
* 多行
104
- * 注释
104
+ * 注释 - 用于文档
105
105
*/
106
106
107
- // TODO:向IDE中的任务列表添加注释(VS、Rider都支持)
108
-
107
+ // TODO:
108
+ // 向IDE中的任务列表添加注释(VS、Rider都支持)
109
109
// / XML 单行注释,用于文档
110
-
111
- /**
112
- * XML 多行注释,
113
- * 用于文档
114
- */
115
110
```
116
111
117
112
### 条件判断
@@ -139,6 +134,7 @@ bool[] answers = {true, false};
139
134
```
140
135
141
136
### 循环
137
+ <!-- rehype:wrap-class=col-span-2-->
142
138
143
139
``` cs
144
140
int [] numbers = {1 , 2 , 3 , 4 , 5 };
@@ -287,9 +283,8 @@ string multiLine = """
287
283
Console .WriteLine (multiLine ); // => Content begin "Hello World!" /\n<>"" end.
288
284
```
289
285
290
- ### 字符串操作
291
-
292
- #### 字符串判空
286
+ ### 字符串判空
287
+ <!-- rehype:wrap-class=col-span-2-->
293
288
294
289
``` cs
295
290
string name ; // 空引用
@@ -300,40 +295,42 @@ Console.WriteLine(string.IsNullOrEmpty(name)); //输出 true
300
295
Console .WriteLine (string .IsNullOrEmpty (gender )); // 输出 true
301
296
```
302
297
303
- #### 字符串分割
298
+ ### 字符串截取
299
+
300
+ ``` cs
301
+ string Str = " 字符串截取" ;
302
+ Str = Str .Substring (2 , 1 );
303
+ Console .WriteLine (Str );
304
+ // 输出结果“串”,意为从第二个下标开始截取一位字符
305
+ ```
306
+
307
+ ### 字符串分割
308
+ <!-- rehype:wrap-class=col-span-2-->
304
309
305
310
``` cs
306
311
string Name = " 字A符A串A分A割" ;
307
312
string [] Names = Name .Split (new char [] { 'A' });
308
- // 会以A为媒介把字符串分成若干份
313
+ // 会以A为媒介把字符串分成若干份
309
314
for (int i = 0 ; i < Names .Length ; i ++ )
310
315
{
311
316
Console .Write (Names [i ]);
312
317
}
313
318
```
314
319
315
- #### 字符串截取
316
-
317
- ``` cs
318
- string Str = " 字符串截取" ;
319
- Str = Str .Substring (2 , 1 );
320
- Console .WriteLine (Str );
321
- // 输出结果“串”,意为从第二个下标开始截取一位字符
322
- ```
323
-
324
- #### 字符串替换
320
+ ### 字符串替换
325
321
326
322
``` cs
327
323
string Rep = " 字符1替换" ;
328
324
Rep = Rep .Replace (" 1" , " 串" );
329
325
Console .WriteLine (Rep );
330
- // 会把字符中的 “1”替换成“串”
326
+ // 会把字符中的 “1”替换成“串”
331
327
```
332
328
333
329
运算符和表达式
334
330
--------
335
331
336
332
### 逻辑运算
333
+ <!-- rehype:wrap-class=row-span-2-->
337
334
338
335
``` cs
339
336
// 或运算, 与运算, 非运算
@@ -361,31 +358,15 @@ C# 中的逻辑运算支持可空布尔类型运算. 注意条件逻辑运算不
361
358
362
359
x | y | x & y | x \| y | x ^ y | ! x
363
360
:- | - | --- | --- | --- | --
364
- true | true | true | true | false | false
365
- true | false | false | true | true | false
366
- true | null | null | true | null | false
367
- false | true | false | true | true | true
368
- false | false | false | false | false | true
369
- false | null | false | null | null | true
370
- null | true | null | true | null | null
371
- null | false | false | null | null | null
372
- null | null | null | null | null | null
373
- <!-- rehype:className=show-header-->
374
-
375
- ### 算术运算符
376
- <!-- rehype:wrap-class=col-span-1-->
377
-
378
- C# 支持下表中的所有算术运算符。假设变量 A 的值为 10,变量 B 的值为 20,则:
379
-
380
- | 运算符 | 描述 | 实例 |
381
- | :----- | -------------------------------- | ----------------- |
382
- | + | 把两个操作数相加 | A + B 将得到 30 |
383
- | - | 从第一个操作数中减去第二个操作数 | A - B 将得到 -10 |
384
- | \* | 把两个操作数相乘 | A \* B 将得到 200 |
385
- | / | 分子除以分母 | B / A 将得到 2 |
386
- | % | 取模运算符,整除后的余数 | B % A 将得到 0 |
387
- | ++ | 自增运算符,整数值增加 1 | A++ 将得到 11 |
388
- | -- | 自减运算符,整数值减少 1 | A-- 将得到 9 |
361
+ <code >true</code > | <code >true</code > | <code >true</code > | <code >true</code > | false | false
362
+ <code >true</code > | false | false | <code >true</code > | <code >true</code > | false
363
+ <code >true</code > | <pur >null</pur > | <pur >null</pur > | <code >true</code > | <pur >null</pur > | false
364
+ false | <code >true</code > | false | <code >true</code > | <code >true</code > | <code >true</code >
365
+ false | false | false | false | false | <code >true</code >
366
+ false | <pur >null</pur > | false | <pur >null</pur > | <pur >null</pur > | <code >true</code >
367
+ <pur >null</pur > | <code >true</code > | <pur >null</pur > | <code >true</code > | <pur >null</pur > | <pur >null</pur >
368
+ <pur >null</pur > | false | false | <pur >null</pur > | <pur >null</pur > | <pur >null</pur >
369
+ <pur >null</pur > | <pur >null</pur > | <pur >null</pur > | <pur >null</pur > | <pur >null</pur > | <pur >null</pur >
389
370
<!-- rehype:className=show-header-->
390
371
391
372
### 关系运算符
@@ -403,10 +384,24 @@ C# 支持下表中的所有关系运算符。假设变量 A 的值为 1,变量
403
384
| <= | 检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。 | (A <= B) 为真。 |
404
385
<!-- rehype:className=show-header-->
405
386
406
- ### 运算符优先级
407
- <!-- rehype:wrap-class=col-span-3 -->
387
+ ### 算术运算符
388
+ <!-- rehype:wrap-class=col-span-2 -->
408
389
409
- 运算符的优先级确定表达式中项的组合。这会影响到一个表达式如何计算。某些运算符比其他运算符有更高的优先级,例如,乘除运算符具有比加减运算符更高的优先级。
390
+ C# 支持下表中的所有算术运算符。假设变量 A 的值为 10,变量 B 的值为 20,则:
391
+
392
+ | 运算符 | 描述 | 实例 |
393
+ | :----- | -------------------------------- | ----------------- |
394
+ | + | 把两个操作数相加 | A + B 将得到 30 |
395
+ | - | 从第一个操作数中减去第二个操作数 | A - B 将得到 -10 |
396
+ | \* | 把两个操作数相乘 | A \* B 将得到 200 |
397
+ | / | 分子除以分母 | B / A 将得到 2 |
398
+ | % | 取模运算符,整除后的余数 | B % A 将得到 0 |
399
+ | ++ | 自增运算符,整数值增加 1 | A++ 将得到 11 |
400
+ | -- | 自减运算符,整数值减少 1 | A-- 将得到 9 |
401
+ <!-- rehype:className=show-header-->
402
+
403
+ ### 运算符优先级
404
+ <!-- rehype:wrap-class=col-span-2 row-span-3-->
410
405
411
406
下表将按运算符优先级从高到低列出各个运算符,具有较高优先级的运算符出现在表格的上面,具有较低优先级的运算符出现在表格的下面。在表达式中,较高优先级的运算符会优先被计算。
412
407
@@ -429,6 +424,111 @@ C# 支持下表中的所有关系运算符。假设变量 A 的值为 1,变量
429
424
| 逗号 | , | 从左到右 |
430
425
<!-- rehype:className=show-header-->
431
426
427
+ 运算符的优先级确定表达式中项的组合。这会影响到一个表达式如何计算。某些运算符比其他运算符有更高的优先级,例如,乘除运算符具有比加减运算符更高的优先级。
428
+
429
+ ### 逻辑非运算符
430
+
431
+ ``` cs
432
+ bool passed = false ;
433
+ Console .WriteLine (! passed ); // 输出: True
434
+ Console .WriteLine (! true ); // 输出: False
435
+ ```
436
+
437
+ ### 逻辑“与”运算符 &
438
+
439
+ ``` cs
440
+ bool SecondOperand ()
441
+ {
442
+ Console .WriteLine (" 计算第二个操作数" );
443
+ return true ;
444
+ }
445
+
446
+ bool a = false & SecondOperand ();
447
+ Console .WriteLine (a );
448
+ // 输出:
449
+ // 计算第二个操作数
450
+ // False
451
+
452
+ bool b = true & SecondOperand ();
453
+ Console .WriteLine (b );
454
+ // 输出:
455
+ // 计算第二个操作数
456
+ // True
457
+ ```
458
+
459
+ ### 逻辑异或运算符 ^
460
+
461
+ ``` cs
462
+ Console .WriteLine (true ^ true ); // 输出: False
463
+ Console .WriteLine (true ^ false ); // 输出: True
464
+ Console .WriteLine (false ^ true ); // 输出: True
465
+ Console .WriteLine (false ^ false );// 输出: False
466
+ ```
467
+
468
+ ### 逻辑或运算符 |
469
+
470
+ ``` cs
471
+ bool SecondOperand ()
472
+ {
473
+ Console .WriteLine (" 计算第二个操作数" );
474
+ return true ;
475
+ }
476
+
477
+ bool a = true | SecondOperand ();
478
+ Console .WriteLine (a );
479
+ // 输出:
480
+ // 计算第二个操作数
481
+ // True
482
+
483
+ bool b = false | SecondOperand ();
484
+ Console .WriteLine (b );
485
+ // 输出:
486
+ // 计算第二个操作数
487
+ // True
488
+ ```
489
+
490
+ ### 条件逻辑“与”运算符 &&
491
+
492
+ ``` cs
493
+ bool SecondOperand ()
494
+ {
495
+ Console .WriteLine (" 计算第二个操作数" );
496
+ return true ;
497
+ }
498
+
499
+ bool a = false && SecondOperand ();
500
+ Console .WriteLine (a );
501
+ // 输出:
502
+ // False
503
+
504
+ bool b = true && SecondOperand ();
505
+ Console .WriteLine (b );
506
+ // 输出:
507
+ // 计算第二个操作数
508
+ // True
509
+ ```
510
+
511
+ ### 条件逻辑或运算符 ||
512
+
513
+ ``` cs
514
+ bool SecondOperand ()
515
+ {
516
+ Console .WriteLine (" 计算第二个操作数" );
517
+ return true ;
518
+ }
519
+
520
+ bool a = true || SecondOperand ();
521
+ Console .WriteLine (a );
522
+ // 输出:
523
+ // True
524
+
525
+ bool b = false || SecondOperand ();
526
+ Console .WriteLine (b );
527
+ // 输出:
528
+ // 计算第二个操作数
529
+ // True
530
+ ```
531
+
432
532
杂项
433
533
-----------
434
534
0 commit comments