一周学会C#Word格式文档下载.docx
- 文档编号:21625032
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:70
- 大小:54.17KB
一周学会C#Word格式文档下载.docx
《一周学会C#Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《一周学会C#Word格式文档下载.docx(70页珍藏版)》请在冰豆网上搜索。
publicstaticvoidMain(string[]args)
{
foreach(stringargsinargs){
System.Console.WriteLine(arg);
}}
程序中的Main函数必须为static。
2.标识符
标识符起名的规则:
局部变量、局部常量、非公有实例域、函数参数使用camelCase规则;
其他类型的标识符使用PascalCase规则。
privateStyle——camelCase规则(第一个单词的首字母小写,其余单词的首字母大写)
PublicStyle——PascalCase规则(所有单词的首字母大写)
尽量不要使用缩写。
Message,而不要使用msg。
不要使用匈牙利命名法。
publicsealedclassGrammarHelper
{...
publicQualifiedSymbolOptional(AnySymbolsymbol)
{...}
privateAnyMultiplicityoptional=
newOptionalMultiplicity();
}
3.关键字
C#中76个关键字:
abstractasbaseboolbreak
bytecasecatchcharchecked
classconstcontinuedecimaldefault
delegatedodoubleelseenum
eventexplicitexternfalsefinally
fixedfloatforforeachgoto
ifimplicitinintinterface
internalislocklongnamespace
newnullobjectoperatorout
overrideparamsprivateprotectedpublic
readonlyrefreturnsbytesealed
shortsizeofstackallocstaticstring
structswitchthisthrowtrue
trytypeofuintulongunchecked
unsafeushortusingvirtualvoid
while
5个在某些情况下是关键字:
getsetvalueaddremove
C#中有76个在任何情况下都有固定意思的关键字。
另外还有5个在特定情况下才有固定意思的标识符。
例如,value能用来作为变量名,但有一种情况例外,那就是它用作属性/索引器的set语句的时候是一关键字。
但你可以在关键字前加@来使它可以用作变量名:
int@int=42;
不过在一般情况下不要使用这种变量名。
你也可以使用@来产生跨越几行的字符串,这对于产生正则表达式非常有用。
例如:
stringpattern=@"
(#startthegroup
abra(cad)?
#matchabraandoptionalcad
)+"
;
#oneormoreoccurrences
如果你要在字符串中包含双引号,那你可以这样:
stringquote=@"
"
quote"
4.标点符号
{和}组成语句块
分号表示一个语句的结束
publicsealedclassHiker
publicstaticvoidMain()
一个C#的“类/结构/枚举”的定义不需要一个终止的分号。
publicsealedclassHiker
{
...
}//没有;
是正确的
然而你可以使用一个终止的分号,但对程序没有任何影响:
};
//有;
是可以的但不推荐
在Java中,一个函数的定义中可以有一个结尾分号,但在C#中是不允许的。
publicvoidHitch(){...};
//;
是不正确的
5.声明
声明是在一个块中引入变量
◆每个变量有一个标识符和一个类型
◆每个变量的类型不能被改变
这样声明一个变量是非法的:
这个变量可能不会被用到。
if(...)
intx=42;
//编译时出错
else
...
6.表达式
表达式是用来计算的!
♦每个表达式产生一个值
♦每个表达式必须只有单边作用
♦每个变量只有被赋值后才能使用
C#不允许任何一个表达式读取变量的值,除非编译器知道这个变量已经被初始化或已经被赋值。
例如,下面的语句会导致编译器错误:
intm;
if(...){
m=42;
}
Console.WriteLine(m);
//编译器错误,因为m有可能不会被赋值
7.取值
类型取值解释
booltruefalse布尔型
float3.14实型
double3.1415双精度型
char'
X'
字符型
int9整型
string"
Hello"
字符串
objectnull对象
8.操作符
操作符类型
+-*/%(取余数)算术
&
||!
?
:
逻辑
<
<
=>
>
=关系
==!
=相等
=赋值
9.编程风格
∙较正规的编程风格
♦在一个二元操作符的每一边都加一个空格
♦在每一个逗号后面而不是前面加一个空格
♦每一个关键字后面加一个空格
♦一行一个语句
♦分号前不要有空格
♦函数的园括号和参数之间不加空格
♦在一元操作符和操作数之间不加空格
在一个二元操作符的每一边都加一个空格:
Console.WriteLine("
{0}"
result/13);
//推荐
result/13);
//不推荐
在每一个逗号后面而不是前面加一个空格:
result/13);
每一个关键字后面加一个空格:
if(OneLine(comment))...//推荐
if(OneLine(comment))...//不推荐
分号前不要有空格:
result/13);
函数的园括号和参数之间不加空格:
if(OneLine(comment))...//不推荐
在一元操作符和操作数之间不加空格:
++keywordCount;
++keywordCount;
10.找错
boolchecked;
...1
publicstaticvoidmain()
{...}2
intmatched=symbol.Match(input)
if(matched>
0)
....
}3
charoptional="
?
stringtheory='
complex'
4
intmatched=0_or_more(symbol);
...5
第1段程序的错误:
checked是一个关键字
第2段程序的错误:
不是main,而是Main
第3段程序的错误:
变量声明语句没有分号
第4段程序的错误:
字符值必须用单引号表示,字符串必须用双引号表示
第5段程序的错误:
第一个错误是标识符不能以数字开头;
第二个错误是不能用下划线作标识符。
一周学会C#(函数)
1.前言
∙C#不支持全局函数
♦所有的函数必须在类内部声明
∙无源文件和头文件之分
♦所有的函数必须声明的时候被实现
intNotAllowed()//错误,C#没有全局函数
...
sealedclassMethods
voidInline()
{...
voidError()
};
//错误,函数不能有结尾分号
intAlsoError();
//错误,函数必须声明的时候被实现
和Java一样,C#不允许有全局函数。
所有的函数必须在类或结构内实现。
函数是类或结构的成员,函数也被称为方法。
C#允许可以在类的声明中加入结尾分号,例如:
sealedclassMethods
...
//可以有结尾分号
但是,C#不允许在函数的声明中加入结尾分号,例如:
voidNotAllowed(){...};
2.声明函数
∙函数参数列表
♦各参数以逗号隔开
♦参数必须命名
♦没有参数时括号不能省略
voidError(float)//错误,参数没有命名
voidNoError(floatdelta)
intError(void)//错误,无参数时不允许使用void
intNoError()
3.值型参数
∙一般的函数参数是实参的一个拷贝
♦实参必须预先被赋值
♦实参可以是常量类型
sealedclassParameterPassing
staticvoidMethod(intparameter)
parameter=42;
staticvoidMain()
intarg=0;
Console.Write(arg);
//结果为0
Method(arg);
(注:
为了叙述的方便,以后所出现的“参数”这个词均指函数参数,也就是所谓的形参)
没有被ref或out修饰的函数参数是一个值型参数。
值型参数只有在该参数所属的函数被调用的时候才存在,并且用调用时所传递的实参的值来进行初始化。
当函数调用结束时,值型参数不复存在。
只有被预先赋值的实参才能被传递给值型参数,例如:
intarg;
//arg没有被赋初值
Method(arg);
//错误,实参必须预先赋初值
传递给函数的实参可以是纯粹的数而不是变量,例如:
Method(42);
Method(21+21);
4.引用型参数
∙引用型参数是实参的一个别名
♦没有发生复制
♦实参必须是一个变量类型
♦实参和函数参数都要有ref
staticvoidMethod(refintparameter)
Method(refarg);
//结果为42
函数参数有ref修饰符时,被称为引用型参数。
引用型参数不产生新的存储区间。
实际上,引用型参数是函数调用时所传递的实参所代表的变量的别名。
结果是引用型参数只是实参所代表的变量的另一个名字。
ref修饰符必须同时出现在函数声明语句和函数调用语句中。
只有被预先赋值的实参才能被传递给引用型参数,例如:
Method(refarg);
传递给引用型参数的实参必须是变量类型,而不能是纯粹的值或常量。
Method(ref42);
//错误,引用型参数的实参不能是纯粹的值
constintarg=42;
Method(refarg);
//错误,引用型参数的实参不能是常量
5.out型参数
∙out型参数是实参的一个别名
♦实参不必预先赋值
♦实参必须是变量类型
♦函数参数必须被预先赋值才能使用
♦实参和函数参数都要有out
staticvoidMethod(outintparameter)
intarg;
//Console.Write(arg);
Method(outarg);
函数参数有out修饰符时,被称为out型参数。
out型参数不产生新的存储区间。
实际上,out型参数是函数调用时所传递的实参所代表的变量的别名。
结果是out型参数只是实参所代表的变量的另一个名字。
out修饰符必须同时出现在函数声明语句和函数调用语句中。
没有被预先赋值的实参能够被传递给引用型参数,例如:
Method(outarg);
//正确,实参可以不赋初值
传递给out型参数的实参必须是变量类型,而不能是纯粹的值或常量。
Method(out42);
//错误,out型参数的实参不能是纯粹的值
Method(outarg);
//错误,out型参数的实参不能是常量
6.in型参数?
∙readonly,const和in,都是C#关键字
♦它们不能被用于函数参数
♦ref/out型参数总是被赋于写的权力
7.函数重载
∙一个类中的函数可以有同一个名字,称为重载
♦函数名和参数称为标识
♦标识必须唯一
♦返回值类型不是标识
namespaceSystem
publicsealedclassConsole
publicstaticvoidWriteLine()
{...}
publicstaticvoidWriteLine(intvalue)
publicstaticvoidWriteLine(doublevalue)
...
publicstaticvoidWriteLine(objectvalue)
和C++与Java一样,C#允许一个类声明两个以上的同名函数,只要参数的类型或个数不同。
这就是重载。
但是,一个类不能包含标识为相同的实例函数和静态函数,例如:
sealedclassIllegal
voidOverload(){...}
staticvoidOverload(){...}//错误
和C++与Java一样,返回值的类型不是标识的一部分,不能被用作重载的标准,例如:
sealedclassAlsoIllegal
intRandom(){...}
doubleRandom(){...}//错误
8.ref/out重载
∙ref/out在大部分情况下是标识的一部分!
♦你可以重载一个ref型参数和一个普通参数
♦你可以重载一个out型参数和一个普通参数
♦你不可以重载一个ref型参数和一个out型参数
sealedclassOverloading
voidAllowed(intparameter)
voidAllowed(refintparameter)
//正确,重载一个ref型参数和一个普通参数
voidAlsoAllowed(intparameter)
voidAlsoAllowed(outintparameter)
{...}
//正确,重载一个out型参数和一个普通参数
voidNotAllowed(refintparameter)
voidNotAllowed(outintparameter)
//错误,不能重载一个ref型参数和一个out型参数
ref和out修饰符可以是一个函数的标识。
但是你不能同时重载ref和out型参数。
ref和out修饰符在某种意义上是“安全的“,因为只有ref型实参才能传递给ref型函数参数,只有out型实参才能传递给out型函数参数。
但是,当调用函数的时候,你会非常容易忘记ref和out修饰符,所以最好不要重载ref和out型参数。
sealedclassOverloading
publicstaticvoidExample(intparameter)
{...}
publicstaticvoidExample(refintparameter)
staticvoidMain()
{
intargument=42;
Example(argument);
//在这儿非常容易忘记ref修饰符
}
9.访问规则
●函数参数或返回值不能比所属函数的访问级别低
sealedclassT{...}//类的默认访问级别是internal
publicsealedclassBad
publicvoidParameter(Tt)//错误,函数的访问级别(public)比参数高
publicTReturn()//错误,函数的访问级别(public)比返回值高
publicsealedclassGood
privatevoidParameter(Tt)//正确,函数的访问级别(private)比参数低
privateTReturn()//正确,函数的访问级别(private)比返回值低
10.找错误
sealedclassBuggy
voidDefaulted(doubled=0.0)1
voidReadOnly(constrefWibblew)2
refintReturnType()3
refintfieldModifier;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一周 学会 C#
![提示](https://static.bdocx.com/images/bang_tan.gif)