【零基础自学C#】第2节

zcxsythenew UID.911687
2017-08-03 发表

零基础自学C#的第一节请见:
***链接停止解析***

本系列的大部分内容来自:
***链接停止解析***

[hr]

上一篇文章讲到命名空间里面可以包含接口结构枚举委托。这一篇文章,先从开始。

请准备好上一篇文章提到的12行代码:

[mw_shl_code=csharp,true]using System;

namespace ConsoleAppForWfun
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}[/mw_shl_code]

以下内容来自:***链接停止解析***
声明一个类

在代码的第5行,创建了以“Program”为名称的。第3行声明了以“ConsoleAppForWfun”为名称的命名空间,因此Program“存放在”命名空间ConsoleAppForWfun中。

[mw_shl_code=csharp,true]class Program[/mw_shl_code]

定义了这个类以后,你可以在代码里面找到它:

***附件停止解析***

除了第1行的using指令外,由于第3行声明命名空间,因此在这篇.cs文档中,省略“ConsoleAppForWfun”也可以找到Program。

***附件停止解析***

有时,在class的前面,会加一个关键词,例如:

[mw_shl_code=csharp,true]public class Program[/mw_shl_code]

对于本例而言,可用的关键词有:
public
internal

对于未添加关键词的类,编译器会给它加上一个看不见的默认关键词。对于本例而言,默认的关键词是internal。

这些关键词会限定这个类的可访问性。此处先省略不讲。

函数

如果你还没有忘记高中数学的知识,你应该还记得这种写法:
y=f(x)
f(x)就是一个函数。x是一个数值,经过计算以后,f(x)也是一个数值。x称为自变量,y称为因变量。
在C#中,函数并不一定以数值作为自变量,以数值作为因变量。“自变量”称为参数,“因变量”称为返回值
参数的类型有以下几种:接口结构枚举委托
返回值的类型有以下几种:接口结构枚举委托void(表示不返回值)。
一个函数可以有1个参数,也可以有多个参数,也可以没有参数。但是一个函数必须仅有一个返回值。
在代码的第7行,定义了一个函数。

[mw_shl_code=csharp,true]static void Main(string[] args)[/mw_shl_code]

static是一个关键词,表示这个函数是静态函数,此处先省略不讲。我们先看看后面的部分:

void表示返回值的类型,string[]表示参数的类型,args表示参数。

Quote什么?string[]是参数的类型?不是只有接口结构枚举委托5种吗?

的确如此,string是的一种,而string[]表示数组。此处先省略不讲。

在static的前面(如果没有static,在返回值类型的前面),可以包含一个关键词来指定这个函数(也称为方法)的可访问性。可用的关键词有:
public
protected
internal
protected internal
private

类的成员

一个类中,可以包含多个成员。以下代码:

[mw_shl_code=csharp,true]using System;

namespace ConsoleAppForWfun
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}[/mw_shl_code]

表示Main方法是类Program中的一个成员。

入口点

在.NET Core模板的控制台应用程序中,Main方法是该程序的入口点入口点表示应用程序启动时首先将要执行的代码。

语句

在一个方法中,可以写很多个语句。每个语句末尾用分号“;”结束。在本例中,只写了一个,在代码的第9行:

[mw_shl_code=csharp,true]Console.WriteLine("Hello World!");[/mw_shl_code]

语句只有5种形式:赋值调用自增自减初始化
上面的语句用的是第2种。它调用了System命名空间下的Console下的WriteLine方法参数"Hello World!"的类型是string。

以下内容来自:***链接停止解析***
变量

在一个方法的内部,可以声明一个变量变量接口结构枚举委托5种。

内置的变量类型

C#内置了很多常用的变量类型。具体如下:
bool 结构 值的范围:true/false
byte 结构 值的范围:0到255
sbyte 结构 值的范围:-128到127
char 结构 值的范围:Unicode字符
int 结构 值的范围:-2147483648到2147483647
uint 结构 值的范围:0到4294967295
long 结构 值的范围:-9223372036854775808 到 9223372036854775807
ulong 结构 值的范围:0到18446744073709551615
short 结构 值的范围:-32768到32767
ushort 结构 值的范围:0到65535
demical 结构 精度:28位,值的对数(log(10,n))范围是-28到28
double 结构 精度:15到16位,值的对数(log(10,n))范围是-324到308
float 结构 精度:7到8位,值的对数(log(10,n))范围是-45到38
string 表示字符串,字符串由一系列的char构成

结构类型中,float、double、demical都是浮点数类型,这意味着可以赋值为小数,但当数据的有效数字超过相应的精度的时候,它会损失一些精度。例如,float类型的1000000000-1的结果是1000000000,而不是999999999。
除了bool以外,其它结构类型为整型,不会损失精度,但必须为整数。

声明变量

声明变量的例子如下:

[mw_shl_code=csharp,true]bool a;
byte b;
char c;[/mw_shl_code]

可以在方法里面声明变量。
[mw_shl_code=csharp,true]using System;

namespace ConsoleAppForWfun
{
class Program
{
static void Main(string[] args)
{
string str;
Console.WriteLine("Hello World!");
}
}
}[/mw_shl_code]
以上表示在Main方法中声明了以str为名称的类型为string的变量。在方法中声明的变量,称为局部变量
C#要求声明了局部变量以后,必须赋值,然后才能使用。
刚刚提到,语句有5种形式:赋值调用自增自减初始化
我们将用到的是赋值语句。
[mw_shl_code=csharp,true]using System;

namespace ConsoleAppForWfun
{
class Program
{
static void Main(string[] args)
{
string str;
str = "Welcome to C#!"
Console.WriteLine("Hello World!");
}
}
}[/mw_shl_code]
声明变量与赋值语句可以合并。
[mw_shl_code=csharp,true]using System;

namespace ConsoleAppForWfun
{
class Program
{
static void Main(string[] args)
{
string str = "Welcome to C#!"
Console.WriteLine("Hello World!");
}
}
}[/mw_shl_code]
那么,赋值语句和调用语句是否可以合并呢?

使方法返回值

我们在类Program里面,再定义一个方法,使它的返回类型为string。

[mw_shl_code=csharp,true]using System;

namespace ConsoleAppForWfun
{
class Program
{
static string GetStr()
{
return "Welcome to C#!";
}

static void Main(string[] args)
{
string str = GetStr();
Console.WriteLine("Hello World!");
}
}
}[/mw_shl_code]

(该方法需要是静态的,此处先不解释。)
可以看到,当一个方法的返回值类型不是void的时候,需要用return语句使这个方法返回一个值。str = GetStr(),这和高中数学的y=f(x)是不是很像呢?
string str = GetStr(),这条语句把变量声明、赋值语句、调用语句合并到了一起。
当变量赋值以后,就可以在其它语句中使用它。比如:
[mw_shl_code=csharp,true]using System;

namespace ConsoleAppForWfun
{
class Program
{
static string GetStr()
{
return "Welcome to C#!";
}

static void Main(string[] args)
{
string str = GetStr();
Console.WriteLine(str);
}
}
}[/mw_shl_code]

敬告:
为防止不可控的内容风险,本站已关闭新用户注册,新贴的发表及评论;
你现在看到的内容只是互联网用户曾经发表的言论快照,仅用于老用户留存纪念,且仅与科技行业相关,全部内容不代表本站观点及立场;
本站重新开放前已针对包括用户隐私、版权保护、信息安全、国家政策在内的各种互联网法律法规要求,执行了隐患内容的自查、屏蔽和删除;
本站目前所属个人主体,未有任何盈利安排与计划,且与原WFUN.COM所属公司不存在任何关联关系;
如果本帖内容或者相关资源侵犯到您的合法权益,或者您认为存在问题,那么请您务必点此举报或投诉!
全部回复:
xyangtian UID.832923
2017-08-03 回复

console.readline();
应该先将注释。

Mr****in UID.2850453
2017-08-05 使用 Lumia 950 XL 回复

不错,很明确了

本站使用Golang构建,点击此处申请开源鄂ICP备18029942号-4联系站长投诉/举报