面向零基础新手的 C# 基础知识 17 - 18

17

这节课是概念课。

我们需要了解两个内容:

17.1 命名空间

在最最开始的时候,Bob说了,他在之后会讲命名空间的(这句话说了好多次了吧),现在我似乎知道为什么了。

这要从类开始讲起。

首先,我们知道,.Net内置了很多的类,多到成千上万。在这么多类之中,肯定有重名的。所以,就需要一个标识符把他们区分开来。例如,我们说“玄影”,没人知道是谁。但是要是提到“IT之家”、“Surface Phone”,那就谁都明白了。

这样一来,命名空间的作用也比较好理解了。

17.2 .Net运行库

也是在第一期,Bob说过,像这样的:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

他之后再讲。

这次总算可以讲了。我们会注意到,其实每次打:

Console.WriteLine("12450");

的时候,我们都省略了一个类名:System。

所以,这行代码应该写成这样:

System.Console.WriteLine("12450");

当然,VS会把他变灰,表示可以省略。

那么,上面的灰灰的东西也可以解释:

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

这些都是没有用到的类。

那么,如何引用其他类呢?

只要上MSDN找一下就行了。

18

大家有没有想过,.dll文件到底是干什么的呢?我们自己打又打不开,却总是提示缺少这个缺少那个。这节课,我们学习的就是有关它的内容。

18.1 添加类库

上节课说过,.Net 内置了很多库,那怎么使用他们呢?很简单,要使用.Net库,只要在“引用”上右键,点击“添加引用”就会弹出窗口,我们就可以在窗口中的“框架”选项里浏览我们需要的了。

当然,从网络获取也是可以的。微软自己有一个类似Github的代码托管网站,并且在Vs中集成了下载的功能。如图所示:

▲打开可能要比较长的时间,别点太多次了!

打开之后,如图所示:

▲选择你喜欢的安装就行了

这样,装好之后,第三方库就添加好了!

18.2 (自定义库)DLL

总算进入正题了,DLL,说白了就是自定义库,至于他为什么不能执行,想一下我们前几天学的内容就是了,你想想啊,类是不能直接实例化的吧?所以你相当于想喝水,却在啃水桶——既不能补铁,也没法喝水。所以,由此可以得出,.dll是不能直接运行的。

我们打开新建——项目——类库(.Net FrameWork),打开之后,你会发现,这东西没有Program.cs,只有Class1.cs,这也就印证了我们的想法,.dll是无法执行的,所以,他也没有private static Main 这样的东西。

我们打下面的代码:

using System;
using System.Collections.Generic;
using System.IO;

//这里
using System.Linq;
using System.Net;

//还有这里,都是Ctrl + . 智能弄出来的
using System.Text;
using System.Threading.Tasks;

namespace 库

//中文看着舒服
{
public class Scrape
{
public string zhuaqv(string url)

//公共函数一
{
return siyouzhuaqv(url);
//私有函数,前几节课学的
}
public string zhuaqv(string url, string file)
{

//公共函数的重载
string reply = siyouzhuaqv(url);
File.WriteAllText(file, reply);
return reply;
}
private string siyouzhuaqv (string url)
{

//私有函数,改动方便
WebClient client = new WebClient();
string reply = client.DownloadString(url);
return reply;
}
}
}

从这个例子里,我们还可以看出,前几节课讲的私有函数的重要性。由于两个重载函数里大部分代码相同,所以不如新建一个作为私有函数,这样修改起来也方便。

然后F5,选Release(发布版本),提示错误,不理他。

下面新建一个项目,用来使用刚刚的库。

用开头讲的方法(用“浏览…”选择DLL),导入后,代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using 库;

//这个也是智能加上去的

namespace 自定义类库
{
class Program
{
static void Main(string[] args)
{
Scrape first = new Scrape();

//实例化
string value = first.zhuaqv("http://bing.com");
Console.WriteLine(value);
Console.ReadLine();
}
}
}

▲要想把文件下下来,就在后面加一个   ,"文件路径"   就可以了。(重载函数)

 

18.3 解决方案

这个也是,从第一次就开始讲,什么是解决方案?Bob一直没说,这次终于告诉我们了。

如同字面意思一样,所谓解决方案就是用来构建较为庞大的程序的集合。就拿刚刚的例子来说吧,我们可以同时把.dll 和主文件放进去。然后添加的时候,不用在浏览了,直接在解决方案里选就可以了。并且,在原来,我们通常要打开两个VS,这样比较耗资源。把这两个项目包含到解决方案中,就简便多了。

最后还有一个问题要说一下,整个解决方案生成的时候,我们会发现又有错误了——因为DLL不能运行嘛。所以,我们右键主体程序,设为启动项目,就可以通过编译了。

点赞

发表回复

电子邮件地址不会被公开。必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据