C#高级编程 (第六版) 学习 第二章:C#基础
第二章 基础
1,helloworld示例:
helloworld.cs
|
using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace HelloWorld { class Program { static void Main(string[] args) { Console.WriteLine("Hello Wold. C#"); return; } } } |
使用csc helloworld.cs编译它
2,C#main函数
static void Main()
{
}
Main函数必须为静态类型,而且返回值不是void就是int
3,C#中的方法定义
[modifiers] return_type MethodName([parameters])
修饰符(modifiers):用于指定用户定义的某些方法的特性。
4,变量
变量的初始化:
- 变量是类或者结构中的字段,如果没有显式初始化,创建这些变量时,值为0。
- 方法的局部变量必须在代码中显式初始化才能使用,否则会报错。
5,类型推断
var name = value;
变量必须初始化,声明变量并推断出类型后类型不可改变。
6,变量的作用域
只要类在某个作用域内,字段也在该作用域内。
局部变量存在于表示声明该变量的块语句或方法结束的封闭花括号之前的作用域内。
同名的局部变量不能在同一作用域内声明两次,但是字段可以和局部变量同名。
6,常量
常量使用const修饰
常量必须在声明时初始化,然后值就不能改变了,
7,值类型和引用类型
值类型:存储在堆栈中,直接存储值
引用类型:存储在托管堆上,存储引用
8,预定义的值类型和引用类型
值类型:
- 整型:
|
名称 |
CTS类型 |
说明 |
|
sbyte |
System.SByte |
8位有符号整数 |
|
short |
System.Int16 |
16位有符号整数 |
|
int |
System.Int32 |
32位有符号整数 |
|
long |
System.Int64 |
64位有符号整数 |
|
byte |
System.Byte |
8位无符号整数 |
|
ushort |
System.Uint16 |
16位无符号整数 |
|
uint |
System.Uint32 |
32位无符号整数 |
|
ulong |
System.Uint64 |
64位无符号整数 |
uint ui = 12U;
long l = 10L;
ulong ul = 123UL;
- 浮点类型
|
名称 |
CTS类型 |
说明 |
位数 |
|
float |
System.Single |
32位单精度 |
7 |
|
double |
System.Double |
64位双精度 |
15/16 |
float f = 1.2F;
- decimal类型
|
名称 |
CTS类型 |
说明 |
位数 |
|
decimal |
System.Decimal |
128位高精度十进制 |
28 |
decimal d = 1.2M;
- bool类型
用于包含布尔值true和false
|
名称 |
CTS类型 |
说明 |
位数 |
|
bool |
System.Boolean |
true或者false |
NA |
注:bool类型不能和数值类型相互转换
- 字符类型
|
名称 |
CTS类型 |
说明 |
位数 |
|
char |
System.Char |
表示一个16位Unicode字符 |
16 |
使用单引号表示单个字符
除了把char表示为字符字面量之外,还可以用4位十六进制的Unicode值如'\u0041'带有数据类型转换的整数值(char)65,或者十六进制数'\x0041'来表示他们。
转义序列
|
转义序列 |
字符 |
|
\' |
单引号 |
|
\" |
双引号 |
|
\\ |
反斜杠 |
|
\0 |
空 |
|
\a |
警告 |
|
\b |
退格 |
|
\f |
换页 |
|
\n |
换行 |
|
\r |
回车 |
|
\t |
水平制表 |
|
\v |
垂直制表 |
引用类型
|
名称 |
CTS类型 |
说明 |
|
object |
System.Object |
根类型 |
|
string |
System.String |
Unicode字符串 |
string s = @"a\a"; @表示将后面的字符看成原来的意思
9,流控制
if(condition) statement(s);//condition必须为bool类型
switch…case
case值必须为常量表达式,不允许使用变量。可以把常量字符串用做测试变量。
必须使用break,除非case语句为空。
10,循环
for,while,do..while循环和C/C++相同
foreach循环:支持IEnumerable接口的对象。
例:
|
int[] a = {1,2,3,4,5}; foreach(int i in a) { //operation } |
每次迭代集合中的一个元素,不能改变元素。
11,跳转语句
goto:
goto Label1;
Lable1:
statements;
goto不能跳转到循环中,不能跳出类,不能退出finally
break
用于退出switch,for,foreach,while,do…while循环
continue
跳过当前迭代,用于for,foreach,while,do…while
return:返回
12,枚举
|
public enum A { a = 0, b = 1, c = 2 } |
13,数组
所有数组均为引用类型
声明:int[] a = new int[10];
14,命名空间
命名空间可嵌套。
不允许在另一个声明的命名空间中声明多部分的命名空间。
使用using语句引入命名空间。
使用using alias = NameSpace;声明命名空间的别名。
15,Main方法
Main方法的返回值必须为int或者void,使用string[] args输入参数。可以使用多个Main方法,编译时使用/main开关指定Main方法。
16,编译文件
使用/t或者/target选项指定文件类型,
/t:exe:控制台程序
/t:library:带清单的类库
/t:module:不带清单的类库
/t:winexe:Windows应用程序
/out:指定文件名
/out和/target必须位于文件名前。
17,控制台I/O
格式化结果:{n,w:Pm};
n:参数索引
w:宽度值,正值表示右对齐,负值表示左对齐,实际长度大于n无效
P:格式选项
m:精度
18,预处理指令
#define/#undef
条件编译:
#if
#elif
#else
#endif
#warning/#error
#pragma:抑制或者恢复警告
C#高级编程 (第六版) 学习 第二章:C#基础的更多相关文章
- C#高级编程 (第六版) 学习 第一章:.Net体系结构
第一章 .Net体系结构 1,公共语言运行库(Common Language Runtime, CLR) .Net Framework的核心是其运行库的执行环境,称为公共语言运行库,或.Net运行库. ...
- C#高级编程 (第六版) 学习 第七章:委托和事件
第七章 委托和事件 回调(callback)函数是Windows编程的一个重要方面,实际上是方法调用的指针,也称为函数指针. .Net以委托的形式实现了函数指针的概念,.Net的委托是类型安全的. 委 ...
- C#高级编程 (第六版) 学习 第六章:运算符和类型强制转换
第六章 运算符和类型强制转换 1,运算符 类别 运算符 算术运算符 + - * / % 逻辑运算符 & | ^ ~ && || ! 字符串连接运算符 + 增量和减量运算符 ++ ...
- C#高级编程(第六版)学习:第三十一章:Windows窗体
第三十一章 Windows窗体 创建Windows窗体应用程序 在文本编辑器中输入: /* * form.cs * a simple windows form * */ using System; u ...
- C#高级编程 (第六版) 学习 第五章:数组
第五章 数组 1,简单数组 声明:int[] myArray; 初始化:myArray = new int[4]; 为数组分配内存. 还可以用如下的方法: int[] myArray = new in ...
- C#高级编程 (第六版) 学习 第四章:继承
第四章 继承 1,继承的类型 实现继承: 一个类派生于一个基类型,拥有该基类型所有成员字段和函数. 接口继承 一个类型只继承了函数的签名,没有继承任何实现代码. 2,实现继承 class MyDe ...
- C#高级编程 (第六版) 学习 第三章:对象和类型
第三章 对象和类型 1,类和结构 类存储在托管堆上 结构存储在堆栈上 2,类成员 类中的数据和函数称为类成员 数据成员 数据成员包括了字段.常量和事件 函数成员 方法:与某个类相关的函数,可以 ...
- 【转】apue《UNIX环境高级编程第三版》第一章答案详解
原文网址:http://blog.csdn.net/hubbybob1/article/details/40859835 大家好,从这周开始学习apue<UNIX环境高级编程第三版>,在此 ...
- c#高级编程第七版 学习笔记 第二章 核心c#
第二章 核心C# 本章内容: 声明变量 变量的初始化和作用域 C#的预定义数据类型 在c#程序中使用条件语句.循环和跳转语句执行流 枚举 名称空间 Main()方法 基本的命令行c#编译器选项 使用S ...
随机推荐
- hadoop 提交程序并监控运行
程序编写及打包 使用maven导入第三方jar pom.xml <?xml version="1.0" encoding="UTF-8"?> < ...
- SSM 框架基于ORACLE集成TKMYBATIS 和GENERATOR自动生成代码(Github源码)
基于前一个博客搭建的SSM框架 https://www.cnblogs.com/jiangyuqin/p/9870641.html 源码:https://github.com/JHeaven/ssm- ...
- Go语言中结构体的使用-第2部分OOP
1 概述 结构体的基本语法请参见:Go语言中结构体的使用-第1部分结构体.结构体除了是一个复合数据之外,还用来做面向对象编程.Go 语言使用结构体和结构体成员来描述真实世界的实体和实体对应的各种属性. ...
- 20155215 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
20155215 <Java程序设计>实验一(Java开发环境的熟悉)实验报告 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑 ...
- 再论WPF中的UseLayoutRounding和SnapsToDevicePixels
原文:再论WPF中的UseLayoutRounding和SnapsToDevicePixels 版权声明:.net/web/医疗技术的木子纵横的个人分享 https://blog.csdn.net/m ...
- 简单的Slony-I设置实例
磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL集群方案相关索引页 回到顶级页面:PostgreSQL索引页 参考如下链接: http://lets.postg ...
- JS中的eval函数
最近开始慢慢学习前端的脚本了,上次碰到了一个问题,需要通过一个对象的属性名称来获得这个对象这个属性的值.如果在C#中,那么直接通过反射就可以了.而在js中,也有类似的函数,那就是eval ...
- 解决windows 服务中定时器timer 定时偶尔失效 问题
最近做个windows 服务,功能是:定时执行一个任务:自动登录到一个网站后,点击相关网面上的按钮button. 在处理的过程中发现定时器老是不定时的失效,失效时间没有规律. 由于刚开始处于测试阶段, ...
- 函数parseQuery用于解析url查询参数
在百度上找的,以后忘了再看. 语法如下: var obj = parseQuery(query) query是被解析的查询参数,函数返回解析后的对象. 使用范例如下: var jerry = pars ...
- Selenium2+python自动化-xpath定位语法
前言 在上一篇简单的介绍了用工具查看目标元素的xpath地址,工具查看比较死板,不够灵活,有时候直接复制粘贴会定位不到.这个时候就需要自己手动的去写xpath了,这一篇详细讲解xpath的一些语 ...