命名空间
命名空间的设计目的是提供一种让一组名称与其他名称分隔开的方式。在一个命名空间中声明的类的名称与另一个命名空间中声明的相同的类的名称不冲突。
- 定义命名空间: 是以关键字 namespace 开始,后跟命名空间的名称。
namespace namespace_name{// 代码声明}
- Using关键字: 表明程序使用的是给定命名空间中的名称。
例如在System命名空间里面,里面定义了Console类,我们可以写:
Console.WriteLine (\"Hello Wenry!\");
也可以完全限定名称:
System.Console.WriteLine(\"Hello Wenry!\");
程序结构
- C#的主要程序包括
命名空间声明(Namespace declaration)
一个 class
Class 方法
Class 属性
一个 Main 方法
语句(Statements)& 表达式(Expressions)
注释
using System;namespace EX01{class HelloWenry{static void Main(string[] args){Console.WriteLine(\"Hello Wenry!\");Console.ReadKey();}}} // 结果是:Hello Wnery!
1、程序的第一行 using System;
using 关键字用于在程序中包含 System 命名空间。 一个程序一般有多个 using 语句。
2、下一行是 namespace 声明。
一个 namespace 里包含了一系列的类。EX01命名空间包含了类 HelloWenry。
3、下一行是 class 声明。
- 类 HelloWenry 包含了程序使用的数据和方法声明。类一般包含多个方法。
- 方法定义了类的行为。在这里,HelloWenry类只有一个 Main 方法。
4、下一行定义了 Main 方法,是所有 C# 程序的 入口点。Main 方法说明当执行时 类将做什么动作。
Main 方法通过语句 Console.WriteLine(“Hello Wenry!”); 指定了它的行为。
WriteLine 是一个定义在 System 命名空间中的 Console 类的一个方法。该语句会在屏幕上显示消息 “Hello Wenry!”。
5、最后一行 Console.ReadKey();
是针对 VS.NET 用户的。这使得程序会等待一个按键的动作,防止程序从 Visual Studio .NET 启动时屏幕会快速运行并关闭。
Attention:
- C#对于字母的大小写很敏感
- 所有的语句和表达式必须以 ; 结尾
- 程序的执行都是从main方法开始的
数据类型
在C#当中,变量分为以下几种类型:
- 值类型
值类型变量可以直接分配给一个值。它们是从类 System.ValueType 中派生的。
bool | 布尔值(True 或者 False) |
---|---|
byte | 8位无符号整数 |
char | 16 位 Unicode 字符 |
decimal | 128 位精确的十进制值,28-29 有效位数 |
double | 64 位双精度浮点型 |
float | 32 位单精度浮点型 |
int | 32 位有符号整数类型 |
long | 64 位有符号整数类型 |
-
引用类型
引用类型不包含存储在变量中的实际数据,但它们包含对变量的引用。
换句话说,它们指的是一个内存位置。使用多个变量时,引用类型可以指向一个内存位置。如果内存位置的数据是由一个变量改变的,其他变量会自动反映这种值的变化。
内置的 引用类型有:object、dynamic 和 string。 -
对象(Object)类型
对象(Object)类型 是 C# 通用类型系统(Common Type System – CTS)中所有数据类型的终极基类。Object 是 System.Object 类的别名。所以对象(Object)类型可以被分配任何其他类型(值类型、引用类型、预定义类型或用户自定义类型)的值。但是,在分配值之前,需要先进行类型转换。
当一个值类型转换为对象类型时,则被称为 装箱;另一方面,当一个对象类型转换为值类型时,则被称为 拆箱。
object A;A = 20; // 这是装箱
- 动态(Dynamic)类型
您可以存储任何类型的值在动态数据类型变量中。这些变量的类型检查是在运行时发生的。
声明动态类型的语法:
dynamic B = 20; //这个B是动态的
- 字符串(String)类型
字符串(String)类型 允许您给变量分配任何字符串值。字符串(String)类型是 System.String 类的别名。它是从对象(Object)类型派生的。字符串(String)类型的值可以通过两种形式进行分配:引号和 @引号。
例如:
String str = \"I love Wenry!\";//一个 @引号字符串:@\"I love Wenry!\";//C# string 字符串的前面可以加 @(称作\"逐字字符串\")将转义字符(\\)当作普通字符对待string str = @\"C:\\Data\";//等价于string str = \"C:\\\\Data\";//@ 字符串中可以任意换行,换行符及缩进空格都计算在字符串长度之内string str = @\"<AAAA><!----></BBB>\";
- 指针类型
指针类型变量存储另一种类型的内存地址。
type* identifier;char* A;int* B;
类型转换
- 隐式类型转换: 是C#默认的以安全的方式进行的转换,不会导致数据的丢失。(小的整数类型—>大的整数类型,派生类—>基类)
- 显示类型换: 是强制类型转换,需要强制转换运算符,有可能会造成数据丢失。
namespace EX02{class Conversion{static void Main(string[] args){double a = 123.48;int b;// 强制转换 double 为 intb = (int)a;Console.WriteLine(b);Console.ReadKey();}}}//结果为 123