基本概念----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 中的网站项 ...
随机推荐
- angularjs provider 供应商服务
今天学习了angularjs的provider的供应商服务,写了个例子(自定义供应商服务,也可使用angularjs内部提供的服务) var starterApp = angular.module(' ...
- c#解析XML到DATASET及dataset转为xml文件函数
//将xml对象内容字符串转换为DataSet public static DataSet ConvertXMLToDataSet(string xmlData) { ...
- 常用[js,css,jquery,html]
目录: 一.javascript事件和属性 二.jquery事件和方法 三.js 四.css 五.html 六.js操作cookies 七.插件 javascript事件和属性 事件 onblur ...
- [PHP源码阅读]strlen函数
文章来自:http://www.hoohack.me/2016/02/22/phps-source-analytics-strlen 我在github有对PHP源码更详细的注解.感兴趣的可以围观一下, ...
- 剑指Offer面试题:12.在O(1)时间删除链表结点
一.题目:在O(1)时间删除链表结点 题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点. 原文采用的是C/C++,这里采用C#,节点定义如下: public class ...
- 现在创业做App,先做 Android 还是 iOS?
随着互联网+的高速发展,现在创业大部分都是在布局移动端,初期往往摆在面前最大的难题是,如何分配有限的成本,在最快的速度内占领市场?这个大难题会影响创始人在团队和产品建设方方面面的决定.缩小至移动App ...
- ReactNative与NativeScript对比报告
综合这段时间对ReactNative(下称RN)和NativeScript(下称NS)的简单学习了解,分别从不同方面分析对比二者的优缺点. 页面结构 NS一个页面的目录结构: RN的一个页面一般就是一 ...
- .NET core for docker
本文描述下 .net core 在 docker 里面的玩法 首先按照官方文档先 拉取镜像 docker pull microsoft/dotnet:latest 然后就有了 dotnet 这个运行时 ...
- Elasticsearch 5.0 —— Head插件部署指南
使用ES的基本都会使用过head,但是版本升级到5.0后,head插件就不好使了.下面就看看如何在5.0中启动Head插件吧! 官方粗略教程 Running with built in server ...
- Spring学习记录(五)---bean的作用域scope
作用域:singleton:单例,整个应用中只创建一个实例(默认) prototype:原型,每次注入时都新建一个实例 session:会话,每个会话创建一个实例 request:请求,每个请求创建一 ...