9.0 KiB
title | localeTitle |
---|---|
The C Programming Language | C程序设计语言 |
基本
- 建立
- 你的第一个C#程序
- 类型和变量
- 流量控制声明
- 运营商
- 字符串
- 类,对象,接口和主要方法
- 字段和属性
- 范围和可访问性修饰符
- 处理例外情况
中间
- 泛型
- 事件,代表和Lambda表达式
- 集合框架
- LINQ
高级
- 异步编程(异步和等待)
- 任务并行库
C#6有什么新功能
- 空条件运算符
- 自动属性初始化程序
- 表达的名称
- 表达身体的功能和属性
- 其他特性
面向对象原则(OOP)
- 封装
- 抽象化
- 遗产
- 多态性
坚实的原则
- 单一责任原则
- 开放封闭原则
- 利斯科夫替代原则
- 接口隔离原理
- 依赖倒置原则
C#最佳实践,设计模式和测试驱动开发(TDD)
建立
LinqPad是一个.NET暂存器,用于快速测试您的C#代码片段。标准版是免费的,是初学者执行语言陈述,表达式和程序的完美工具。
或者,您也可以下载Visual Studio Community 2015 ,它是大多数专业人员用于创建企业应用程序的可扩展IDE 。
你的第一个C#程序
//this is the single line comment
/** This is multiline comment,
compiler ignores any code inside comment blocks.
**/
//This is the namespace, part of the standard .NET Framework Class Library
using System;
// namespace defines the scope of related objects into packages
namespace Learning.CSharp
{
// name of the class, should be same as of .cs file
public class Program
{
//entry point method for console applications
public static void Main()
{
//print lines on console
Console.WriteLine("Hello, World!");
//Reads the next line of characters from the standard input stream.Most common use is to pause program execution before clearing the console.
Console.ReadLine();
}
}
}
每个C#控制台应用程序都必须有一个Main方法 ,它是程序的入口点。
在.NET Fiddle中编辑HelloWorld ,这是一个受JSFiddle启发的工具,您可以在其中更改代码片段并自行检查输出。请注意,这只是为了共享和测试代码片段,而不是用于开发应用程序。
如果您使用的是Visual Studio,请按照本教程创建控制台应用程序并了解您的第一个C#程序。
类型和变量
C#是一种强类型语言。每个变量都有一个类型。每个表达式或语句都计算为一个值。 C#中有两种类型
- 价值类型
- 参考类型。
值类型 : 值类型的变量直接包含值。将一个值类型变量分配给另一个值复制包含的值。
int a = 10;
int b = 20;
a=b;
Console.WriteLine(a); //prints 20
Console.WriteLine(b); //prints 20
请注意,在其他动态语言中,这可能会有所不同,但在C#中,这始终是值副本。创建值类型时,会创建最有可能在堆栈中的单个空间,这是一个“LIFO”(后进先出)数据结构。堆栈具有大小限制并且存储器操作是有效的。内置数据类型的几个例子是int, float, double, decimal, char and string
。
输入|示例|描述
--------- | -------------------------------------------------- --------------------------- | -------------------------------------------------- -------------------------------------------------- -----------------------------
整数 | int fooInt = 7;
| 签名32位整数
长 | long fooLong = 3000L;
| 有符号的64位整数。 L用于指定此变量值的类型为long / ulong
双 | double fooDouble = 20.99;
|精度: 15-16位
浮动 | float fooFloat = 314.5f;
|精度: 7位数 。 F用于指定此变量值的类型为float
十进制 | decimal fooDecimal = 23.3m;
|精度: 28-29位。它更精确,更小的范围使其适用于财务和货币计算
Char | char fooChar = 'Z';
|单个16位Unicode字符
布尔 | bool fooBoolean = false;
| Boolean - true和false
字符串 | string fooString = "\"escape\" quotes and add \n (new lines) and \t (tabs);
| 一串Unicode字符。
有关所有内置数据类型的完整列表,请参见此处
引用类型 : 引用类型的变量存储对其对象的引用,这意味着它们将地址存储到堆栈上的数据位置,也称为指针。实际数据存储在堆内存中。将引用类型分配给另一个不会复制数据,而是创建指向堆上相同位置的第二个引用副本。
在堆中,对象以随机顺序分配和释放,这就是为什么这需要内存管理和[垃圾收集](https://msdn.microsoft.com/en-us/library/hh156531(v=vs.110)的开销.aspx)。
除非您编写不安全的代码或处理[非托管代码](https://msdn.microsoft.com/en-us/library/sd10k43k(v=vs.100) .aspx),否则您无需担心内存位置的生命周期。 .NET编译器和CLR会处理这个问题,但为了优化应用程序的性能,保持这种思路仍然是好的。
更多信息在这里
流量控制声明
-
int myScore = 700; if (myScore == 700) { Console.WriteLine("I get printed on the console"); } else if (myScore > 10) { Console.WriteLine("I don't"); } else { Console.WriteLine("I also don't"); }
-
使用系统;
公共课程 { public static void Main() { int myNumber = 0; 开关(myNumber) { //切换部分可以有多个案例标签。 案例0: 情况1: { Console.WriteLine(“案例0或1”); 打破; }
// Most switch sections contain a jump statement, such as a break, goto, or return.; case 2: Console.WriteLine("Case 2"); break; // 7 - 4 in the following line evaluates to 3. case 7 - 4: Console.WriteLine("Case 3"); break; // If the value of myNumber is not 0, 1, 2, or 3 the //default case is executed.* default: Console.WriteLine("Default case. This is also optional"); break; // could also throw new Exception() instead } }
}
-
For & Foreach : 在.NET小提琴中编辑
for(int i = 0; i <10; i ++) { Console.WriteLine(ⅰ); //打印0-9 }
Console.WriteLine(Environment.NewLine); for(int i = 0; i <= 10; i ++) { Console.WriteLine(ⅰ); //打印0-10 }
Console.WriteLine(Environment.NewLine); for(int i = 10 - 1; i> = 0; i--)//递减循环 { Console.WriteLine(ⅰ); //打印9-0 }
Console.WriteLine(Environment.NewLine); // for(;;) { //所有表达式都是可选的。这个说法 //创建一个无限循环。* //
} -
虽然 & do-while : 在.NET小提琴中编辑
//继续while循环,直到index等于10。 int i = 0; 而(i <10) { Console.Write(“While语句”); Console.WriteLine(i); //将索引写入屏幕。 i ++; //增加变量。 }
int number = 0; //首先工作,直到满足条件,即数字等于4时终止。 做 { Console.WriteLine(number); //打印0-4的值 号++; //将一个添加到数字。 } while(number <= 4);