基本概念----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 中的网站项 ...
随机推荐
- 正确获取访问者ip
使用$_SERVER['REMOTE_ADDR']获取访问者ip具有局限性.比如访问者系统位于docker环境时,$_SERVER['REMOTE_ADDR']获取到的ip为虚拟ip,而不是我们真正需 ...
- 系统定位在iOS8中的改变
CLLocationManager这个系统定位的类在iOS8之前要实现定位,只需要遵守CLLocationManagerDelegate这个代理即可: - (void)startLocate { ...
- error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
zabbix3.2启动有如下报错: # service zabbix_server startStarting zabbix_server: /home/zabbix-server/sbin/zab ...
- sql SYS对象集合
select * from SYS.objects select * from SYS.all_objects select * from SYS.tables select * from SYS.c ...
- iOS在线更新framework,使用NSBundle动态读取
官方文档:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/LoadingCode/Tasks/Loadin ...
- yformater - chrome谷歌浏览器json格式化json高亮json解析插件
yformater是一款chrome浏览器插件,用来格式化(高亮)服务端接口返回的json数据. 实际上小菜并不是第一个写这种插件的,但是现有的chrome json格式化插件实在是不太好用,索性小菜 ...
- [ASP.NET MVC 大牛之路]03 - C#高级知识点概要(2) - 线程和并发
本人博客已转移至:http://www.exblr.com/liam 我也想过跳过C#高级知识点概要直接讲MVC,但经过前思后想,还是觉得有必要讲的.我希望通过自己的经验给大家一些指引,带着大家一起 ...
- Android开发学习之路-PopupWindow和仿QQ左滑删除
这周作业,要做一个类似QQ的左滑删除效果的ListView,因为不想给每个item都放一个按钮,所以决定用PopupWindow,这里记录一下 先放一下效果图: 先说明一下这里面的问题: ①没有做到像 ...
- 使用Hexo搭建专属Blog
喜欢折腾的自己最开始在博客园有仿写几篇Blog,虽也可以自己改变风格,可是到底不是独立的一块儿地方,要知道独立的才是自己的;有属于自己独立的域名和Blog,真真是一件很爽的存在.在各种大牛的分享下在G ...
- iOS-多线程基础
进程与线程: 1> 一个应用程序对应一个进程,一个进程帮助程序占据一块存储空间 2> 要想在进程中执行任务,就必须开启线程,一条线程就代表一个任务 3> 一个进程中允许开 ...