基本概念----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 = 281; 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 = {{1,2,3,4}, {2,3,4,5}, {3,4,5,6}}; foreach (double height in hillHeight) {Console.WriteLine("{0}", height); } // 输出结果依次为: // [0,0] // [0,1] // ...
在当每一行的数据量不相等的时候,可以使用Arrays of Arrays。在使用数组的数组的时候,不能像多维数组一样进行使用,如:
int[][] jagged; jagged = new int[3][4]; // 在编译的过程中会出现’cannot implicitly convert type 'int' to 'int[][]'的错误
有两种方式可以用来实现声明。如:
jagged = new int[2][]; jagged[0] = new int[3]; jagged[1] = new int[4];// or like below jagged = {new int[] {1,2,3}, new int[] {1}, new int[] {4,5,6,7}};
在对其进行遍历的时候也需要注意,不能采用如下的方式:
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 + 1);Console.Write(str.Substring(i, 1));}return; }
转载于:https://www.cnblogs.com/grass-and-moon/p/4046668.html
基本概念----Beginning Visual C#相关推荐
- 读《Ivor Horton's beginning Visual C++ 2010》有感
最近花了5天左右的时间读了[1],并且按照书中的介绍,一步一步地实现了书中所有的代码.我对Visual C++.MFC..Net下C++项目编程有了更深刻的理解,对于实际项目的实现过程有了一次深刻的体 ...
- Ivor Horton‘s Beginning Visual C++ 2013 - Visual C++ 2013 入门经典
Ivor Horton's Beginning Visual C++ 2013 - Visual C++ 2013 入门经典 Ivor Horton's Beginning Visual C++ 20 ...
- Ivor Horton's Beginning Visual C++ 2010
Ivor Horton's Beginning Visual C++ 2010 转载于:https://www.cnblogs.com/gavinhughhu/archive/2010/05/12/1 ...
- Ivor Horton's Beginning Visual C++ 2008
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版.作者信息和本声明.否则将追究法律责任. http://blog.csdn.net/topmvp - topmvp Proudly ...
- Visual studio 2005如何实现源码管理
转自CSDN Visual studio 2005如何实现源码管理(Visual Studio .Net团队开发) 目录: 〇. 摘要 一. 开发前的准备 二. 创建空的SourceSafe数据库 三 ...
- 面向 Visual Studio 开发者的 Git 内部源代码
在我撰写的 Git DevOps 文章 (msdn.com/magazine/mt767697) 中,我介绍了 Git 版本控制系统 (VCS) 与可能已经很熟悉的集中式 VCS 的区别.然后,我演示 ...
- Visual Studio .Net团队开发[转]
一. 开发前的准备 1. 在装有Windows 2000或者Windows XP Professional的机器上安装.net Framework SDK.Visual Studio.Net.Visu ...
- Visual Basic十年风云
Visual Basic十年风云 Visual Basic十年风云 我从来没有想到过,撰写这篇文章需要十年的光阴 有时我自清晨的睡梦中醒来,望着窗外高楼间透露的微稀曙光 耳畔都不免响起那些岁月烙印后的 ...
- Microsoft Visual SourceSafe 使用说明详解
开发前的准备 1. 在装有Windows 2000或者Windows XP Professional的机器上安装.Net Framework SDK.Visual Studio.Net.Visual ...
最新文章
- 2016最新cocoapods版本更新,以及多个版本的问题
- PHP生成Mysql数据字典
- SAP Spartacus里使用Observable访问Component数据
- 梁鑫:重构 - 在美股行情系统的实践
- Android 播放SD卡视频 Demo
- java-io流入门
- adb shell 命令详解
- ★一张图弄明白从零维到十维
- SQL Serevr 2012 安装教程
- APISpace 空号检测API接口 免费好用
- roboware studio教程_2.2.RoboWare Studio安装及使用
- 笔记本电脑配备支架有什么作用吗
- Matlab绘制图像(plot函数)
- mysql 黑名单_51ak带你看MYSQL5.7源码4:实现SQL黑名单功能
- sudo、sudo -s、sudo -i、su 区别
- 开源集市@中关村|气氛热烈,完美收官!
- 输入一个大于3的整数n,判定它是否为素数。例题5.9
- HMM隐马尔可夫模型进行中文文本分词
- 重装系统服务器不识别u盘,重装系统时BIOS不识别U盘启动盘如何解决?
- Visual Studio 2010 SP1 安装失败
热门文章
- UVa1587 - Box
- ajax请求url最大长度,针对较长的URL的400BAD请求(ajax)
- php ai,php能做AI智能吗
- php删除数据库数据操作日志文件,MSSQL清空日志删除日志文件
- hdu 4417 树状数组查询区间不是1到n时需要转换,例[0,5]变成[1,6]
- tsd3dmapper软件使用方法_mybatis-plus的使用 ------ 入门
- 递归算法设计 —— 选择排序和冒泡排序
- Codeforces Round #460 (Div. 2): D. Substring(有向图)
- 有长度要求的区间最大值
- 玲珑杯round11-E:萌萌哒的第五题