一、基本代码结构:
1 using System; 2 namespace HelloWorldApplication 3 { 4 class HelloWorld 5 { 6 static void Main(string[] args) 7 { 8 /* 我的第一个 C# 程序*/ 9 Console.WriteLine("Hello World"); 10 Console.ReadKey();
//这使得程序会等待一个按键的动作,防止程序从 Visual Studio .NET 启动时屏幕会快速运行并关闭。 11 } 12 } 13 }
c#的文件后缀:.cs
c#是大小写敏感、每句话要以;结尾、文件名可以与类名不同。类和变量的定义与C++一致
Console.ReadLine() 会等待直到用户按下回车,一次读入一行。
Console.ReadKey() 则是等待用户按下任意键,一次读入一个字符。
Console.WriteLine("Area: {0}", GetArea()); //打印函数返回的结果
二、数据类型
1 值类型(Value types) 2 值类型直接包含数据。比如bool、double、 int、char、float,它们分别存 储布尔值、双精度浮点数数字、字符、浮点数。 3 运用sizeof(int) 看存储大小,几个字节 4 十进制类型:decimal
5 5 引用类型(Reference types) 6 包含对变量的引用。它们指的是一个内存位置。 7 内置的 引用类型有:object、dynamic 和 string。 8 对象(Object)类型 9 System.Object 类的别名。所以对象(Object)类型可以被分配任何其他类型(值类型、引用类型、预定义类型或用户自定义类型)的值。 10 但是,在分配值之前,需要先进行类型转换。 11 当一个值类型转换为对象类型时,则被称为 装箱;另一方面,当一个对象类型转换为值类型时,则被称为 拆箱。 12 object obj; 13 obj = 100; 14 15 动态(Dynamic)类型 16 可以存储任何类型的值在动态数据类型变量中。这些变量的类型检查是在运行时发生的。这点区别于对象类型 17 dynamic <variable_name> = value; 18 dynamic d = 20; 19 20 字符串(String)类型 21 System.String 类的别名。它是从对象(Object)类型派生的。字符串(String)类型的值可以通过两种形式进行分配:引号和 @引号。 22 @ 字符串中可以任意换行,换行符及缩进空格都计算在字符串长度之内 23 String str = "runoob.com"; 24 string str = @"<script type=""text/javascript""> 25 <!-- 26 --> 27 </script>"; 28 C# string 字符串的前面可以加 @(称作"逐字字符串")将转义字符(\)当作普通字符对待 29 string str = @"C:\Windows"; 30 == 31 string str = "C:\\Windows"; 32 指针类型(Pointer types) 33 于C++相同 34 char* cptr; 35 int* iptr;
三、类型转换
- 隐式类型转换 - 这些转换是 C# 默认的以安全方式进行的转换, 不会导致数据丢失。例如,从小的整数类型转换为大的整数类型,从派生类转换为基类。
- 显式类型转换 - 显式类型转换,即强制类型转换。显式转换需要强制转换运算符,而且强制转换会造成数据丢失。
强转 double d = 5673.74; int i; // 强制转换 double 为 int i = (int)d; 内置转换方法 ToDateTime 把类型(整数或字符串类型)转换为 日期-时间 结构。 ToInt64 把类型转换为 64 位整数类型。 ToString 把类型转换为字符串类型。 int i = 75; Console.WriteLine(i.ToString());
四、C#变量
枚举类型:enum 枚举名 {枚举元素1,枚举元素2,……};
变量的定义:
<data_type> <variable_name> = value;
variable_list 可以由一个或多个用逗号分隔的标识符名称组成。并直接初始化
num = Convert.ToInt32(Console.ReadLine());
接受用户的值:函数 Convert.ToInt32() 把用户输入的数据转换为 int 数据类型,因为 Console.ReadLine() 只接受字符串格式的数据。
五、C#常量
整数常量:
整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,没有前缀则表示十进制。
85 /* 十进制 */
0213 /* 八进制 */
0x4b /* 十六进制 */
整数常量也可以有后缀,可以是 U 和 L 的组合,其中,U 和 L 分别表示 unsigned 和 long。后缀可以是大写或者小写,多个后缀以任意顺序进行组合。
30 /* int */
30u /* 无符号 int */
30l /* long */
30ul /* 无符号 long */
浮点常量
使用小数形式或者指数形式来表示浮点常量。
3.14159 /* 合法 */
314159E-5L /* 合法 */
必须包含小数点、指数或同时包含两者。使用指数形式表示时,必须包含整数部分、小数部分或同时包含两者。有符号的指数是用 e 或 E 表示的。
字符常量
\a | Alert 或 bell |
\b | 退格键(Backspace) |
\f | 换页符(Form feed) |
\n | 换行符(Newline) |
\r | 回车 |
\t | 水平制表符 tab |
字符串常量
string e = "Joe said \"Hello\" to me"; // Joe said "Hello" to me
string f = @"Joe said ""Hello"" to me"; // Joe said "Hello" to me
string g = "\\\\server\\share\\file.txt"; // \\server\share\file.txt
string h = @"\\server\share\file.txt"; // \\server\share\file.txt
常量定义
const <data_type> <constant_name> = value;
五 运算符
- 算术运算符
+,-,*,/,%,++,--
c = a++: 先将 a 赋值给 c,再对 a 进行自增运算。c = ++a: 先将 a 进行自增运算,再将 a 赋值给 c 。
- 关系运算符
==,!= , > , < , >= ,<=
- 逻辑运算符
&&, ||,! (与或非)
- 位运算符
逐位执行操作。&、 | 和 ^
&:同一为一,否则为0
|:有一为一,否则为0
^: 相同为一,不同为0
~:含符号位,均取反
<<:二进制左移运算符,后补0:A << 2 将得到 240,即为 1111 0000
>>:二进制右移运算符,前补0:A >> 2 将得到 15,即为 0000 1111
- 赋值运算符
=、+=、-=、*=、/=、%=、<<=、 >>=、 &=、 ^=、 |=
- 其他运算符
&:取地址;