一、c#简介
c#成为一种广泛应用的准也语言的原因:
- 现代的、通用的编程语言
- 面向udixiang
- 面向组件
- 容易学习
- 结构化语言
- 它产生高效率的程序
- 它可以在多种计算机平台上演绎
- .Net 框架的一部分
c#的一些重要功能:
- 布尔条件
- 自动垃圾回收
- 标准库
- 组件版本
- 属性和事件
- 委托和事件管理
- 易于使用的泛型
- 索引器
- 条件变异
- 简单的多线程
- LINQ和Lambda表达式
- 集成Windows
二、程序结构
一个 c# 程序主要包括以下部分:
- 命名空间声明
- 一个 class
- Class 方法
- Class 属性
- 一个 Main 方法
- 语句 & 表达式
- 注释
一个简单的实例如下:
using System;//命名空间
//namespace里包含了一系列的类
namespace Test1_1
{
//类包含了程序使用的数据和方法声明
class HelloWorld
{
//Main是c# 程序的入口点
static void Main(string[] args)
{
Console.WriteLine("Hello World");
//针对VS.NET用户,防止屏幕快速运行并关闭
Console.ReadKey();
}
}
}
注意:
c# 是大小写敏感的
所有的语句和表达式必须以分号结尾(与python不同)
程序的执行从Main方法开始
文件名可以不同于类的名称(与java不同)
三、c# 基本语法
以Rectangle为例:
using System;
namespace RectangleApplication
{
class Rectangle
{
// 成员变量
double length;
double width;
public void Acceptdetails()
{
length = 4.5;
width = 3.5;
}
public double GetArea()
{
return length * width;
}
public void Display()
{
Console.WriteLine("Length:{0}", length);
Console.WriteLine("width:{0}", width);
Console.WriteLine("Area:{0}", GetArea());
}
}
class ExecuteRectangle
{
static void Main(String[] args)
{
Rectangle r = new Rectangle();
r.Acceptdetails();
r.Display();
Console.ReadLine();
}
}
}
输出结果为:
Length:4.5
Width:3.5
Area:15.75
using关键词
用于在程序中包含命名空间,一个程序可以包含多个 using语句。
在c# 程序中的第一条语句都是“using System”。
class关键词
用于声明一个类。
c# 中的注释
单行注释用“//”表示。例如:
/* This program demonstrates
The basic syntax of c# programming
Language */
多行注释以/*开始,并以/*终止。例如:
}//end class Rectangle
成员变量
变量是类的属性或数据成员,用于存储数据。如类Rectangle有两个成员变量:length和width。
成员函数
函数是一系列执行指定任务的语句。类的成员函数式在类内声明的。如类Rectangle包含了三个成员函数:AccepDetails()、GetArea()、Display()。
标识符
标识符是用来识别类、变量、函数或其他用户定义的项目。在c# 中,类的命名必须遵循如下基本规则:
- 必须以字母、下划线或@开头,后面可以跟一系列的字母、数字、下划线、@
- 第一个字符不能是数字
- 必须不包含任何嵌入的空格或符号,比如 ? - +! # % ^ & * ( ) [ ] { } . ; : " ’ / \
- 不能是c# 关键词,除非它们有一个@前缀。例如,@if 是有效的标识符,但if不是
- 必须区分大小写
- 不能与c# 的类库名相同
c# 关键字
关键词是c# 编译器预定义的保留字。这些关键字不能用作标识符,如果想使用这些关键字作为标识符,可以再关键词前面加上@字符作为前缀。
保留关键字:
abstrat | as | base | bool | break | byte | case | catch | char |
---|---|---|---|---|---|---|---|---|
checked | class | const | continue | decimal | default | delegate | do | double |
else | enum | event | explicit | exterm | false | finally | fixed | float |
for | foreach | goto | if | implicit | in | int | interface | internal |
is | lock | long | namespace | new | null | object | operator | out |
override | params | private | protected | public | readonly | ref | return | sbyte |
sealed | short | sizeof | stackalloc | static | string | struct | suitch | this |
throw | true | trry | typeof | uint | ulong | unchecked | unsafe | ushort |
using | virtual | void | while. |
上下文关键字:
add | alias | ascending | descending | dynamic | from | get | global | group |
---|---|---|---|---|---|---|---|---|
into | join | let | orderby | partial | remove | select | set |
四、数据类型
在c# 中,变量分为以下几种类型:
- 值类型
- 应用类型
- 指针类型
值类型
值类型变量可以直接分配给一个值。它们是从类System.ValueType中派生的。
值类型直接包含数据。比如int、char、float,它们分别存储数字、字符、浮点数。当声明一个int类型时,系统分配内存来存储值。
如需得到某个类型的具体尺寸,可以使用sizeof() 方法,产生以字节为单位的存储尺寸。
using System;
namespace DataTypeApplication
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Size of int:{0}", sizeof(int));
Console.ReadLine();
}
}
}
输出结果为:
Size of int:4
引用类型
引用类型不包含存储在变量的实际数据,但它们包含对变量的引用。
1.对象(Object)类型
是c# 通用类型中所有数据类型的终极基类,对象类型可以被分配任何其他类型的值,分配值之前,需先进行类型转换。
分箱:一个值类型转换为对象类型。
拆箱:一个对象类型转换为值类型。
如:
object obj;
obj = 100;//装箱
2.动态(Dynamic)类型
可以存储任何类型的值在动态数据类型中,这些变量的类型检查是在运行时发生的。
声明动态类型的语法:
dynamic <varible_name> = value;
例如:
dynamic d = 20;
动态类型与对象类型相似,但是对象类型的变量检查时在编译时发生的,而动态类型变量的检查时在运行时发生的。
3.字符串(String)类型
允许给变量分配任何字符串值,它是从对象类型派生的。字符串类型的值可以通过两种形式进行分配:引号和@引号
例如:
String str = "runoob.com";
@"runoob.com" //一个引号字符串
string str = @"c:\Windows";
string str = "C:\\Windows";//这两行代码是等价的
//@字符串可以任意换行,换行符及缩进空格都计算在长度之内。
string str = @"<script type=""text/javascript"">
<!--
-->
</script>";
指针类型
指针类型变量存储另一种类型的内存地址。
声明指针类型的语法:
type* identifier;
例如:
char* cptr;
int* iptr;
五、c# 类型转换
隐式类型转换:
c# 默认的以安全方式进行的转换,不会导致数据丢失。例如:从小的证书类型转换为大的整数类型,从派生类转换为基类。
显式类型转换:
即强制类型转换,显式转换需要强制转换运算符,而且强制转换会造成数据丢失。
例如:
using System;
namespace TypeConversionApplication
{
class ExplicitConversion
{
static void Main(string[] args)
{
double d = 5673.74;
int i;
//强制转换double 为 int
i = (int)d;
Console.WriteLine(i);
Console.ReadKey();
}
}
}
输出结果为:
5673
c# 类型转换方法
序号 | 方法&描述 |
---|---|
1 | ToBoolean :把类型转换为布尔型 |
2 | ToByte:把类型转换为字节类型 |
3 | ToChar:把类型转换为单个Unicode字符类型 |
4 | ToDataTime:把类型(整数或字符串)转换为 日期-时间 结构 |
5 | ToDecimal:把浮点型或整数类型转换为十进制类型 |
6 | ToDouble:把类型转换为双精度类型 |
7 | ToInt16:把类型转换为16为整数类型 |
8 | ToInt32:把类型转换为32为整数类型 |
9 | ToInt64:把类型转换为64为整数类型 |
10 | ToSbyte:把类型转换为有符号字节类型 |
11 | ToSingle:把类型转换为小浮点数类型 |
12 | ToString:把类型转换为字符串类型 |
13 | ToType:把类型转换为制订类型 |
14 | ToUInt16:把类型转换为16位无符号整数类型 |
15 | ToUInt32:把类型转换为32位无符号整数类型 |
16 | ToUInt64:把类型转换为64位无符号整数类型 |
六、c# 变量
在c# 中,每个变量都有一个特定的类型,类型决定变量的内存大小和布局。范围内的值可以存储在内存中,可以对变量进行一系列操作。
类型 | 举例 |
---|---|
整数类型 | sbyte、byte、short、ushort、int、uint、long、unlong和char |
浮点型 | float和double |
十进制类型 | decimal |
布尔类型 | true或false值,指定的值 |
空类型 | 可为空值得数据类型 |
c#中的变量定义
语法:
<data_type> <variable_list>;
//其中,data_type是有效的c#数据类型;variable_list可以由一个活多个用逗号隔开的标识符名称组组成。
例如:
int i,j,k;
char c,ch;
//也可以再变量定义时进行初始化:
int i = 100;
c# 中的变量初始化
一般形式为:
variable_name = value;
变量可以再声明时被初始化:
<data_type> <variable_name> = value;
一些实例:
int d = 3, f = 5;
byte z =22;
接受来自用户的值
System 命名空间中的类Console提供了一个函数ReadLine(),用于接收来自用户的输入,并把它存储到一个变量中。
例如:
int num;
num = Convert.ToInt32(Console.ReadLine());
//函数Convert.ToInt32()把用户输入的数据转换为int数据类型,因为Console.ReadLine()值接受字符串格式的数据。
c# 中的Lvalues和Rvalues
lvalues:
lvalue表达式可以出现在赋值语句的左边或右边。(变量)
rvalue:
rvalue表达式只可以出现在赋值语句的右边。(数值)