-
c#教程语句
1. 语句
语句
声明语句
表达式语句
块
是语句的一个无名集合
包含在{}之间
声明语句; //必须要有分号
表达式语句; //必须要有分号
{
语句;
语句;
...
} //不需要有分号
C#和C++、Java一样,都可以把声明语句当作普通语句。换言之,你可以在任何地方使用声明语句,而不必在程序的开头。
一个块定义了一个范围。任何一个在块中声明的变量在块结束时,它就消失了。
2.throw语句
throw语句抛出错误
检查先前定义的条件时非常有用
表达式的类型必须是System.Exception或是它的派生类
string DaySuffix(int days)
{
if (days < 0 || days > 31)
{
throw new
ArgumentOutOfRangeException("days");
}
...
}
3.return语句
return语句返回一个值
表达式必须匹配返回值的类型
最好一个函数只有一个retun语句
使用return; 来结束一个 void 函数
string DaySuffix(int days)
{
string result;
...
return result;
}
一个函数通过return语句能够返回一个单值。return语句中的表达式的类型必须和函数声明的返回值的类型相同或可以隐式转换为返回值的类型。
如果你要从一个函数中返回多个值,那你可以使用以下方法:
你可以把返回值放在一个结构中
你可以把返回值放在一个数组或集合类的对象中
你可以使用在函数中使用out型参数
4.bool
bool 是一个关键字
它是System.Boolean 的别名
它的取值只能为true 和 false
bool love = true;
bool teeth = false;
//正确
System.Boolean love = true;
System.Boolean teeth = false;
//正确
using System;
...
Boolean love = true;
Boolean teeth = false;
//正确
Boolean love = true;
Boolean teeth = false;
//错误,因为没有包含System命名空间,请注意大小写
5.布尔型操作符
1.赋值 =
2.等于 == !=
3.逻辑 ! && || ^ & |
int tens = (9 * 6) / 13;
int units = (9 * 6) % 13;
bool isFour = tens == 4;
bool isTwo = units == 2;
bool hhg;
hhg = isFour & isTwo;
hhg = !(isFour & isTwo);
hhg = !isFour | !isTwo;
hhg = !hhg;
&&的结果是只有当操作符两边的操作数都是true时才是true。如果&&左边的操作数是false的话,那么不管右边的操作数是false还是true,整个&&表达式的值为false。
||的结果是当操作符两边的操作数只要一个是true的时候就是true。如果&&左边的操作数是true的话,那么不管右边的操作数是false还是true,整个&&表达式的值为true。
!表示取反的意思。
有一种称为“短路”的技术非常有用。例如,左边的表达式可以判断一个值是否为0,然后右边的表达式可以把这个值作为除数。例如:
if ((x != 0) && (y / x > tolerance)) ...
6.if语句
string DaySuffix(int days)
{
string result;
if (days / 10 == 1)
result = "th";
else if (days % 10 == 1)
result = "st";
else if (days % 10 == 2)
result = "nd";
else if (days % 10 == 3)
result = "rd";
else
result = "th";
return result;
}
if语句的条件表达式必须是纯粹的bool型表达式。例如下面的诗句是错误的:
if (currentValue = 0) ...
c#要求所有的变量必须预先明确赋值后才能使用,因此,下列的程序是错误的:
int m;
if (inRange)
m = 42;
int copy = m; //错误,因为m可能不会被赋初值。
在C#中,if语句中不能包含变量声明语句,例如:
if (inRange)
int useless;// 错误
7.switch语句
语法
用于整数类类型
case后的标志必须是编译时为常数
没有表示范围的缩略形式
string DaySuffix(int days)
{
string result = "th";
if (days / 10 != 1)
switch (days % 10)
{
case 1 :
result = "st"; break;
case 2 :
result = "nd"; break;
case 3 :
result = "rd"; break;
default: //表示不符合上面条件的情况
result = "th"; break;
}
return result;
}
你只能对整型、字符串或可以隐式转换为整型或字符串的用户自定义类型使用switch语句。case标志必须在编译时是常数。
C#中没有Visual Basic中的Is关键字在case中进行比较,例如:
switch (expression())
{
case Is < 42 : //错误
case method() : //错误
}
C#中没有范围比较符。
switch (expression())
{
case 16 To 21 : //错误
case 16..21 : //错误
}
注意:每个case段必须包括break语句,default语句也不例外。
8.while/do
int digit = 0;
while (digit != 10)
{
Console.Write("{0} ", digit);
digit++;
}//没有分号
int digit = 0;
do
{
Console.Write("{0} ", digit);
digit++;
}
while (digit != 10);//有分号
9.for语句
for 语句
for块中声明的变量是局部的,只在for块中有效
可以省略for语句中的任何一部分
for (int digit = 0; digit != 10; digit++)
{
Console.Write("{0} ", digit);
}
//屏幕上显示0 1 2 3 4 5 6 7 8 9
在for块中声明的变量只在for块中有效。例如:
for (int digit = 0; digit != 10; digit++)
{ ... }
Console.WriteLine(digit); //错误,digit只在for块中有效
可以通过逗号在for语句中声明多个变量和多个变化语句:
for (int i = 0, j = 0; i + j < 20; i++, j++)
{ ... }
10.foreach
来源于shell, VB, PERL
用于任一集合,包括数组
using System;
sealed class Foreach
{
static void Main(string[] args)
{
foreach (string arg in args)
{
Console.Write("{0} ", arg);
}
Console.WriteLine();
}
}
把以上程序在windows命令行进行编译:C:\Sharp>csc Foreach.cs
然后键入:C:\Sharp>Foreach 0 1 2 3 4 5 6 7 8 9
屏幕上显示0 1 2 3 4 5 6 7 8 9
foreach用来遍历集合或数组中的元素。
11.foreach的几点注意
foreach ( 类型 标识符 in 表达式 )
类型和标识符声明一个循环变量
循环变量隐含为readonly, 不能有ref 或out 修饰
表达式是可列举的集合
sealed class ForeachTranslation
{
static void Example(MyWibbleCollection wibbles)
{
MyEnumerator pos = wibbles.GetEnumerator();
while (pos.MoveNext())
{
Wibble current = pos.Current;
Console.Write("{0} ", current);
}
}
}
集合类型的定义规则:(假设集合的名字是C)
C必须定义一公有函数GetEnumerator(),该函数的返回值是一结构类型或是一类类型或是一接口类型(假设返回值的名字是E);
返回值E的定义规则:
E包含一公有函数MoveNext(),用来使E指向集合中的下一个元素,返回值的类型是bool。
E包含一公有属性Current,用来读取当前值。这个属性的类型是集合元素的类型。
12.break/continue
break用来结束一个循环,continue用来重新启动一个循环。
13.找错
{
for (int i = 0; i != 12; i++) 1
{
...
}
int i = 0;
}
for (int i = 0, i == 12, i++) 2
{
...
}
foreach (int i in array) 3
{
i++;
}
第1个程序的错误:不能在一个父块和一个子块中声明两个相同名字的变量
第2个程序的错误:不是使用逗号分割for语句的三个部分,而应使用分号。
for语句的判断条件应为逻辑语句。
第3个程序的错误:foreach的循环变量是只读的
语句
声明语句
表达式语句
块
是语句的一个无名集合
包含在{}之间
声明语句; //必须要有分号
表达式语句; //必须要有分号
{
语句;
语句;
...
} //不需要有分号
C#和C++、Java一样,都可以把声明语句当作普通语句。换言之,你可以在任何地方使用声明语句,而不必在程序的开头。
一个块定义了一个范围。任何一个在块中声明的变量在块结束时,它就消失了。
2.throw语句
throw语句抛出错误
检查先前定义的条件时非常有用
表达式的类型必须是System.Exception或是它的派生类
string DaySuffix(int days)
{
if (days < 0 || days > 31)
{
throw new
ArgumentOutOfRangeException("days");
}
...
}
3.return语句
return语句返回一个值
表达式必须匹配返回值的类型
最好一个函数只有一个retun语句
使用return; 来结束一个 void 函数
string DaySuffix(int days)
{
string result;
...
return result;
}
一个函数通过return语句能够返回一个单值。return语句中的表达式的类型必须和函数声明的返回值的类型相同或可以隐式转换为返回值的类型。
如果你要从一个函数中返回多个值,那你可以使用以下方法:
你可以把返回值放在一个结构中
你可以把返回值放在一个数组或集合类的对象中
你可以使用在函数中使用out型参数
4.bool
bool 是一个关键字
它是System.Boolean 的别名
它的取值只能为true 和 false
bool love = true;
bool teeth = false;
//正确
System.Boolean love = true;
System.Boolean teeth = false;
//正确
using System;
...
Boolean love = true;
Boolean teeth = false;
//正确
Boolean love = true;
Boolean teeth = false;
//错误,因为没有包含System命名空间,请注意大小写
5.布尔型操作符
1.赋值 =
2.等于 == !=
3.逻辑 ! && || ^ & |
int tens = (9 * 6) / 13;
int units = (9 * 6) % 13;
bool isFour = tens == 4;
bool isTwo = units == 2;
bool hhg;
hhg = isFour & isTwo;
hhg = !(isFour & isTwo);
hhg = !isFour | !isTwo;
hhg = !hhg;
&&的结果是只有当操作符两边的操作数都是true时才是true。如果&&左边的操作数是false的话,那么不管右边的操作数是false还是true,整个&&表达式的值为false。
||的结果是当操作符两边的操作数只要一个是true的时候就是true。如果&&左边的操作数是true的话,那么不管右边的操作数是false还是true,整个&&表达式的值为true。
!表示取反的意思。
有一种称为“短路”的技术非常有用。例如,左边的表达式可以判断一个值是否为0,然后右边的表达式可以把这个值作为除数。例如:
if ((x != 0) && (y / x > tolerance)) ...
6.if语句
string DaySuffix(int days)
{
string result;
if (days / 10 == 1)
result = "th";
else if (days % 10 == 1)
result = "st";
else if (days % 10 == 2)
result = "nd";
else if (days % 10 == 3)
result = "rd";
else
result = "th";
return result;
}
if语句的条件表达式必须是纯粹的bool型表达式。例如下面的诗句是错误的:
if (currentValue = 0) ...
c#要求所有的变量必须预先明确赋值后才能使用,因此,下列的程序是错误的:
int m;
if (inRange)
m = 42;
int copy = m; //错误,因为m可能不会被赋初值。
在C#中,if语句中不能包含变量声明语句,例如:
if (inRange)
int useless;// 错误
7.switch语句
语法
用于整数类类型
case后的标志必须是编译时为常数
没有表示范围的缩略形式
string DaySuffix(int days)
{
string result = "th";
if (days / 10 != 1)
switch (days % 10)
{
case 1 :
result = "st"; break;
case 2 :
result = "nd"; break;
case 3 :
result = "rd"; break;
default: //表示不符合上面条件的情况
result = "th"; break;
}
return result;
}
你只能对整型、字符串或可以隐式转换为整型或字符串的用户自定义类型使用switch语句。case标志必须在编译时是常数。
C#中没有Visual Basic中的Is关键字在case中进行比较,例如:
switch (expression())
{
case Is < 42 : //错误
case method() : //错误
}
C#中没有范围比较符。
switch (expression())
{
case 16 To 21 : //错误
case 16..21 : //错误
}
注意:每个case段必须包括break语句,default语句也不例外。
8.while/do
int digit = 0;
while (digit != 10)
{
Console.Write("{0} ", digit);
digit++;
}//没有分号
int digit = 0;
do
{
Console.Write("{0} ", digit);
digit++;
}
while (digit != 10);//有分号
9.for语句
for 语句
for块中声明的变量是局部的,只在for块中有效
可以省略for语句中的任何一部分
for (int digit = 0; digit != 10; digit++)
{
Console.Write("{0} ", digit);
}
//屏幕上显示0 1 2 3 4 5 6 7 8 9
在for块中声明的变量只在for块中有效。例如:
for (int digit = 0; digit != 10; digit++)
{ ... }
Console.WriteLine(digit); //错误,digit只在for块中有效
可以通过逗号在for语句中声明多个变量和多个变化语句:
for (int i = 0, j = 0; i + j < 20; i++, j++)
{ ... }
10.foreach
来源于shell, VB, PERL
用于任一集合,包括数组
using System;
sealed class Foreach
{
static void Main(string[] args)
{
foreach (string arg in args)
{
Console.Write("{0} ", arg);
}
Console.WriteLine();
}
}
把以上程序在windows命令行进行编译:C:\Sharp>csc Foreach.cs
然后键入:C:\Sharp>Foreach 0 1 2 3 4 5 6 7 8 9
屏幕上显示0 1 2 3 4 5 6 7 8 9
foreach用来遍历集合或数组中的元素。
11.foreach的几点注意
foreach ( 类型 标识符 in 表达式 )
类型和标识符声明一个循环变量
循环变量隐含为readonly, 不能有ref 或out 修饰
表达式是可列举的集合
sealed class ForeachTranslation
{
static void Example(MyWibbleCollection wibbles)
{
MyEnumerator pos = wibbles.GetEnumerator();
while (pos.MoveNext())
{
Wibble current = pos.Current;
Console.Write("{0} ", current);
}
}
}
集合类型的定义规则:(假设集合的名字是C)
C必须定义一公有函数GetEnumerator(),该函数的返回值是一结构类型或是一类类型或是一接口类型(假设返回值的名字是E);
返回值E的定义规则:
E包含一公有函数MoveNext(),用来使E指向集合中的下一个元素,返回值的类型是bool。
E包含一公有属性Current,用来读取当前值。这个属性的类型是集合元素的类型。
12.break/continue
break用来结束一个循环,continue用来重新启动一个循环。
13.找错
{
for (int i = 0; i != 12; i++) 1
{
...
}
int i = 0;
}
for (int i = 0, i == 12, i++) 2
{
...
}
foreach (int i in array) 3
{
i++;
}
第1个程序的错误:不能在一个父块和一个子块中声明两个相同名字的变量
第2个程序的错误:不是使用逗号分割for语句的三个部分,而应使用分号。
for语句的判断条件应为逻辑语句。
第3个程序的错误:foreach的循环变量是只读的
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式