基本概念----Beginning Visual C#
更多相关文章,见本人的个人主页:zhongxiewei.com
变量
注释方式:// 注释在这里和/* 注释在这里 */
整形变量的类型:
| Type | Alias for | Allowed Values |
|---|---|---|
| sbyte | System.SByte | Integer between -2^7 and 2^7-1 |
| byte | System.Byte | Integer between 0 and 2^8-1 |
| short | System.Int16 | Integer between -2^15 and 2^15-1 |
| ushort | System.UInt16 | Integer between 0 and 2^16-1 |
| int | System.Int32 | Integer between -2^31 and 2^31-1 |
| uint | System.UInt32 | Integer between 0 and 2^32-1 |
| long | System.Int64 | Integer between -2^63 and 2^63-1 |
| ulong | System.UInt64 | Integer between 0 and 2^64-1 |
浮点型:
| Type | Alias for | Approx Min Value | Approx Max Value |
|---|---|---|---|
| float | System.Single | 1.5x10-45 | 3.4x1038 |
| double | System.Double | 5.0x10-324 | 1.7x10308 |
| decimal | System.Decimal | 1.0x10-28 | 7.9x1028 |
其他简单类型:
| Type | Alias for | Allowed Values |
|---|---|---|
| char | System.Char | Single Unicode char, between 0 and 65535 |
| bool | System.Boolean | true or false |
| string | System.String | a sequence of characters |
关于变量命名:
对于简单的变量可以采用camelCase格式,如:firstName,对于一些高级的变量可以采用PascalCase格式,如LastName,这是微软建议的。
字面常量:
true, false, 100, 100U, 100L, 100UL, 1.5F, 1.5, 1.5M, 'a', "hello"
verbatim, 逐字的常量:
"C:\\Temp\\mydir\\myfile.doc"等同于@"C:\Temp\mydir\myfile.doc",另外可以跨行输入字符串,如:
@"first line
second line
third line"
关于变量的使用,在很多变成语言中都有一个要求,就是在使用前必须进行初始化。
表达式
操作符与C语言类似
操作符的顺序:
| Precedence | Operators |
|---|---|
| Highest | ++, --(used as prefixes); (), +, -(unary), !, ~ |
| *,/,% | |
| +,- | |
| <<, >> | |
| <,>,<=,>= | |
| ==,!= | |
| & | |
| ^ | |
| | | |
| && | |
| || | |
| =,*=,/=,%=,+=,-=,<<=,>>=,&=,^=,|= | |
| Lowest | ++,--(used as suffixes) |
控制流
允许使用goto语句。条件表达式返回的类型必须是bool。如: if (10) return false; // 这句话是不能通过编译的
在使用switch-case的时候,有一点和c++的用法是不同的,如:
switch(testVar)
{
case var1:
// execute code
... // 如果这里没有break语句的话,编译器是不能通过的,而在c++中可以,
// 如果想要让它继续执行下面的case,必须加上“goto case var2;”语句
// 当然如果case var1下面没有执行语句的话,也是合理的
case var2:
// execute code
...
break;
default:
break;
}
循环语句和C++类似
更多变量相关
类型转换
| Type | Can safely be converted to |
|---|---|
| byte | short,ushort,int,uint,long,ulong,float,double,decimal |
| sbyte | short,int,long,float,double,decimal |
| short | int,long,float,double,decimal |
| ushort | int,uint,long,ulong,float,double,decimal |
| int | long,float,double,decimal |
| uint | long,ulong,float,double,decimal |
| long | float,double,decimal |
| ulong | float,double,decimal |
| float | double |
| char | ushort,int,uint,long,ulong,float,double,decimal |
除了以上的隐式转换之外,还存在显示转换。为了防止溢出发生,可以用checked(expression)表达式进行处理,如:
byte destVar;
short srcVar = ;
destVar = checked((byte)srcVar);
或是在项目的选项中,直接开启默认转换检测机制。如下图所示:

一些复杂的变量类型
Enumeration
定义一个enum,如下:
enum orientation : byte // byte能够被其他的整型类型,如int,long等替换
{
north,
south,
east,
west
}
那么声明一个枚举类型采用的方法为:orientation myDirect = orientation.north;;直接输出myDirect的结果为:north。想要输出它所表示的byte类型的具体数值,就必须采用显示的类型转换:(byte)myDirect。
也可以将“north”字符串转换成枚举类型,采用的方式稍微复杂,具体如下:
string myStr = "north";
orientation myDirect = (orientation)Enum.Parse(typeof(orientation), myStr);
struct
struct类型和C++不同的是,变量的类型默认不是public的。而是private的。
Arrays
数组的声明方式如下:<baseType>[] <name>;,如:int[] myIntArray = {1,2,3};,int[] myIntArray = new int[5];。不能够采用如下的方式进行声明:<baseType> <name>[];
多维数组的语法结构也有其特殊性。声明方式如下:<baseType>[,] <name>;,如:double[,] hillHeight = new double[3,4];。在多维数组中各个数据的排序顺序为行优先排序,如:
double[,] hillHeight = {{,,,}, {,,,}, {,,,}};
foreach (double height in hillHeight)
{
Console.WriteLine("{0}", height);
}
// 输出结果依次为:
// [0,0]
// [0,1]
// ...
在当每一行的数据量不相等的时候,可以使用Arrays of Arrays。在使用数组的数组的时候,不能像多维数组一样进行使用,如:
int[][] jagged;
jagged = new int[][]; // 在编译的过程中会出现’cannot implicitly convert type 'int' to 'int[][]'的错误
有两种方式可以用来实现声明。如:
jagged = new int[][];
jagged[] = new int[];
jagged[] = new int[]; // or like below
jagged = {new int[] {,,}, new int[] {}, new int[] {,,,}};
在对其进行遍历的时候也需要注意,不能采用如下的方式:
foreach (int val in jagged) // 出现编译错误,不能将int[]转换成int
{
Console.WriteLine(val);
} // 于是应该更改为如下方式: foreach (int[] valArray in jagged)
{
foreach (int val in valArray)
{
Console.WriteLine(val);
}
}
对String的操作
string str=" hello world ";常见的有: str.Trim();,str.TrimStart(),str.TrimEnd(),str.ToLower(),str.PadLeft(10, '-'),str.Split({' '})
练习
- 逆序输出字符串,递归的方式完成
public static void printReverse(string str, int i)
{
if (i < str.Length)
{
printReverse(str, i + );
Console.Write(str.Substring(i, ));
} return;
}
基本概念----Beginning Visual C#的更多相关文章
- Events基本概念----Beginning Visual C#
span.kw { color: #007020; font-weight: bold; } code > span.dt { color: #902000; } code > span. ...
- 与类相关基本概念----Beginning Visual C#
span.kw { color: #007020; font-weight: bold; } code > span.dt { color: #902000; } code > span. ...
- Windows Programming ---- Beginning Visual C#
span.kw { color: #007020; font-weight: bold; } code > span.dt { color: #902000; } code > span. ...
- 函数----Beginning Visual C#
span.kw { color: #007020; font-weight: bold; } code > span.dt { color: #902000; } code > span. ...
- visual formatting model (可视化格式模型)【持续修正】
概念: visual formatting model,可视化格式模型 The CSS visual formatting model is an algorithm that processes a ...
- 用于 Visual Studio 和 ASP.NET 的 Web 应用程序项目部署常见问题
https://msdn.microsoft.com/zh-cn/library/ee942158(v=vs.110).aspx#can_i_exclude_specific_files_or_fol ...
- Visual Studio 2012 开发环境配置+控制台工具+桌面应用程序
一.界面布局视图设置 1.窗口的布局.控制台窗口运行恢复到开发环境的设置方法 也可以保存好设好的个性化设置,导入设置: 2.视图|服务器资源管理器(sever explorer) 可以访问数据源.服务 ...
- Visual Basic了解
Visual Basic是一种由微软公司开发的结构化的.模块化的.面向对象的.包含协助开发环境的事件驱动为机制的可视化程序设计语言.这是一种可用于微软自家产品开发的语言.它源自于Basic编程语言.V ...
- Web 应用程序项目与 Visual Studio 中的网站项目的异同
要查看英语原文,请勾选“英语”复选框.也可将鼠标指针移到文本上,在弹出窗口中显示英语原文. 翻译 英语 本文档已存档,并且将不进行维护. Web 应用程序项目与 Visual Studio 中的网站项 ...
随机推荐
- RunTimeException包括:
大约有如下几种: NullPointerException - 空指针引用异常 ClassCastException - 类型强制转换异常 IllegalArgumentException- 传递非法 ...
- 通过jquery js 实现幻灯片切换轮播效果
观察各个电商网址轮播图的效果,总结了一下主要突破点与难点 1.->封装函数的步骤与具体实现 2->this关键字的指向 3->jquery js函数熟练运用 如animate 4-& ...
- 安卓动态调试七种武器之离别钩 – Hooking(上)
安卓动态调试七种武器之离别钩 – Hooking(上) 作者:蒸米@阿里聚安全 0x00 序 随着移动安全越来越火,各种调试工具也都层出不穷,但因为环境和需求的不同,并没有工具是万能的.另外工具是死的 ...
- HappyAA服务器部署笔记2(nginx的静态资源缓存配置)
我近期对服务器进行了少量改进,虽然之前使用了nginx反向代理之后性能有所提高,但仍然不够,需要使用缓存来大幅度提高静态资源的访问速度. 服务器上的静态资源主要有这些:png, jpg, svg, j ...
- 1ms引发的问题
最近在跟SQLServer数据库进行交互的时候发现一个奇怪的问题,在往数据库里边插入日期型数据的时候,在C#里面赋值的为 2014/05/19 23:59:59,但是存到数据库里边就变成了2014/0 ...
- [nRF51822] 11、基础实验代码解析大全 · 实验16 - 内部FLASH读写
一.实验内容: 通过串口发送单个字符到NRF51822,NRF51822 接收到字符后将其写入到FLASH 的最后一页,之后将其读出并通过串口打印出数据. 二.nRF51822芯片内部flash知识 ...
- 今天Windows Azure Live to Code的分享
今天参加了微软广州的Live to Code,晚上回公司OT写了封报告E-mail,也没让公司今天白出工资给我... 因为没有涉及到公司机密什么的,所以就拿出来跟大家分享一下. 首先要说明的是,在会议 ...
- ASP.NET MVC 从零开始 - Web.config
这篇文章是从我的 github 博客 http://lxconan.github.io 导入的. 在上一篇中,我们从零开始创建了一个非常简单的 ASP.NET MVC 应用程序.接下来,你是不是期望我 ...
- MySQL_02之增删改查、PHP数据库操作
1.数据操作: ①插入记录: 插入单条记录:INSERT tbl_name(字段名称,--) VALUES(字段值,--); 插入多条记录:INSERT tbl_name(字段名称,--) VAL ...
- 创建分区表和查看分区表的Metadata
未分区的表,只能存储在一个FileGroup中:对table进行分区后,每一个分区都存储在一个FileGroup中.表分区是将逻辑上一个完整的表,按照特定的字段拆分成Partition set,分散到 ...