如第一章说明,程序员的创造能力最接近于神,那么从现在开始,让我们来开始愉快地创造世界吧!

用解决方案来管理我们的创作

运行我们安装好的Visual Studio(以后一般情况下都会简称为VS),如下图所示,选择 文件新建项目

在弹出来的 新建项目 窗口中,如下图所示,选择 其他项目类型Visual Studio 解决方案空白解决方案

名称(N): 处,我们填写上 Universe

位置(L): 则根据自己的电脑环境选择自己想存放该解决方案的文件目录。

创建完 Universe 解决方案后,我们能看到VS界面右边的 解决方案资源管理器 应该会如下图所示

右击 解决方案'Universe' 选择 在文件资源管理器中打开文件夹 ,看看我们创建了什么。

我们看到了在文件目录中有一个叫 Universe.sln 的文件。

右击 解决方案'Universe' 选择 添加新建解决方案文件夹

然后给文件夹名称起名 .NET

再次右击 解决方案'Universe' 选择 添加新建解决方案文件夹

然后给文件夹名称起名 .NET Core

最终 解决方案资源管理器 应该会如下图所示

再次右击 解决方案'Universe' 选择 在文件资源管理器中打开文件夹 ,看看我们创建了什么。

我们看到了在文件目录中依然只有一个叫 Universe.sln 的文件。没有 .NET 文件夹或 .NET Core 文件夹。你也许会很困惑为什么会这样,后面会解释,这里让我们继续专注完成"Hello,World!" 例子把~

.NET版本的"Hello,World!"

解决方案资源管理器 右击 .NET 文件夹,选择 添加新建项目

在弹出来的 新建项目 窗口中,如下图所示,选择 Visual C#控制台应用(.NET Framework)

名称(N): 处,我们填写上 HelloWorld

位置(L): 文件夹路径尾部添加上 \.NET

框架(F): 选择最高的版本,不一定要和截图一致,截图中是 .NET Framework 4.7.1

点击 确定 按钮后,VS左边会打开 Program.cs 如下图所示

而在VS右边的 解决方案资源管理器 应该会如下图所以

我们会在 Program.cs 这个文件的 static void Main(string[] args){} 两个大括号之间添加代码,最终代码如下面所示

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace HelloWorld
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello,World!");
Console.WriteLine("宇宙纪元:" + DateTime.Now.ToString()); Console.ReadLine();
}
}
}

而在VS顶部菜单栏中点击 启动 ,或者按键盘上的 F5 ,运行我们刚刚编写的代码~

至此,我们完成了编程界著名的 "Hello,World!" 例子,同时也创造了我们第一个动态世界——每次点击 启动 ,或者按键盘上的 F5,运行我们编写的代码,每次的时间都不一样。虽然例子很简单,但记住,当你能力越强,创出出来的世界越丰富!

这里解释一下上面提到的为什么没有 .NET 文件夹或 .NET Core 文件夹。我们点击 解决方案资源管理器 中的 HelloWorld 项目,将其拖动到.NET Core 文件夹中

然后右击 解决方案'Universe' 选择 在文件资源管理器中打开文件夹 看看~

我们看到文件夹中.NET 文件夹和 Universe.sln 的文件,并没有.NET Core 文件夹,而.NET文件夹是我们在创建 HelloWorld 项目在 位置(L): 文件夹路径尾部添加上 \.NET 创建出来的。

因此我们可以得知在VS右边的 解决方案资源管理器 点击 解决方案'Universe' 选择 添加新建解决方案文件夹 创造出来的文件夹并不会出现在真实的文件目录中,只是用来管理我们项目的虚拟目录。当然我们可以将虚拟目录隐射到真实目录。介绍这些的原因是因为这里有几个概念需要读者先了解一个大概, 按物理分按逻辑分映射 ,同时介绍怎么更好地管理资源。

再次点击 解决方案资源管理器 中的 HelloWorld 项目,将其拖动回到 .NET 文件夹中,如下图所示~

.NET Core版本的"Hello,World!"

让我们在 .NET Core 文件夹下创建一个项目来试试.NET Core版本的"Hello,World!"把~

解决方案资源管理器 右击 .NET Core 文件夹,选择 添加新建项目

在弹出来的 新建项目 窗口中,如下图所示,选择 Visual C#.NET Core控制台应用(.NET Core)

名称(N): 处,我们填写上 HelloWorldCore

位置(L): 文件夹路径尾部添加上 \NetCore,特别不一样,再次体验 按物理分按逻辑分映射

点击确定 按钮后,VS右边的 解决方案资源管理器 应该如下图所示~

依然右击 解决方案'Universe' 选择 在文件资源管理器中打开文件夹 ,看看我们创建了什么。

新创建 Program.cs 的内容默认如下面代码段:

using System;

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

我们添加添加代码后,如下面代码段展示:

using System;

namespace HelloWorldCore
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello,World!");
Console.WriteLine("宇宙纪元:" + DateTime.Now.ToString()); Console.ReadLine();
}
}
}

在VS右边的 解决方案资源管理器 ,右击 HelloWorldCore 选择 设为启动项目 ,如下图所示~

而在VS顶部菜单栏中点击 HelloWorldCore ,或者按键盘上的 F5 ,运行我们刚刚编写的代码。

至此,我们完成 "Hello,World!" 的.NET Core版本。

结束语

本章介绍如何创建两个版本的"Hello,World!",

但你应该很困惑,那些代码每行是什么意思啊,不用急,后面会一一解释。

下一章,将介绍什么是.NET,什么是.NET Core。

编程哲学之 C# 篇:005——"Hello,World!"的更多相关文章

  1. 编程哲学之C#篇:02——学习思维

    <代码大全>的第二章:介绍隐喻(类比)的思维方式, <经济学原理>的第二章:介绍怎么像经济学家一样思考, <计算机的心智操作系统之哲学原理>的第一章:介绍学习操作系 ...

  2. 编程哲学之C#篇:01——创世纪

    我们能否像神一样地创建一个世界? 对于创建世界而言,程序员的创作能力最接近于神--相对于导演,作家,漫画家而言,他们创建的世界(作品)一旦完成,就再也不会变化,创建的角色再也不会成长.而程序员创建的世 ...

  3. 编程哲学之 C# 篇:007——如何创造万物

    上帝拥有创建万物的能力,本文介绍创造万物的道,让你也拥有上帝般创造万物的能力! 道 中国哲学家,道家学派创始人--老子,在<道德经>写到: 道生一,一生二,二生三,三生万物 那么,是什么 ...

  4. Python黑帽编程2.1 Python编程哲学

    Python黑帽编程2.1  Python编程哲学 本节的内容有些趣味性,涉及到很多人为什么会选择Python,为什么会喜欢这门语言.我带大家膜拜下Python作者的Python之禅,然后再来了解下P ...

  5. Linux shell脚本编程基础之练习篇

    shell脚本编程基础之练习篇. 1.编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息. #!/bin/bash ] then echo "请输入一个参数& ...

  6. 浅谈.Net异步编程的前世今生----APM篇

    前言 在.Net程序开发过程中,我们经常会遇到如下场景: 编写WinForm程序客户端,需要查询数据库获取数据,于是我们根据需求写好了代码后,点击查询,发现界面卡死,无法响应.经过调试,发现查询数据库 ...

  7. Scala进阶之路-并发编程模型Akka入门篇

    Scala进阶之路-并发编程模型Akka入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Akka Actor介绍 1>.Akka介绍 写并发程序很难.程序员不得不处 ...

  8. 浅谈.Net异步编程的前世今生----EAP篇

    前言 在上一篇博文中,我们提到了APM模型实现异步编程的模式,通过使用APM模型,可以简化.Net中编写异步程序的方式,但APM模型本身依然存在一些缺点,如无法得知操作进度,不能取消异步操作等. 针对 ...

  9. 从编程哲学到开发应用:Spring的初步应用

    一.前言 在学习Spring的过程中,我们学习了很多东西,可是实际应用中,我们究竟用到了那些?常用的又是那种方法呢? 二.书上与开发的差异 1.IOC 1) IOC,控制反转,是Spring框架的核心 ...

  10. 并发编程之第三篇(synchronized)

    并发编程之第三篇(synchronized) 3. 自旋优化 4. 偏向锁 撤销-其它线程使用对象 撤销-调用wait/notify 批量重偏向 批量撤销 5. 锁消除 4.7 wait/notify ...

随机推荐

  1. 2022年Python顶级自动化特征工程框架⛵

    作者:韩信子@ShowMeAI 机器学习实战系列:https://www.showmeai.tech/tutorials/41 本文地址:https://www.showmeai.tech/artic ...

  2. 嵌入式-C语言基础:数组指针

    定义一个数组指针,指向二维数组: int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int (*p)[4];//定义二维指针数组 p=a;//指向二维数组 ...

  3. 什么是CLR?

    CLR翻译为"公共语言运行库",全称是Common Language Runtime,它是一个可以由多种语言使用的"运行时",CLR的核心功能如内存管理,程序集 ...

  4. 微信小程序的学习(二)

    一.数据绑定 1.数据绑定的基本原则 在 data 中定义数据 在 wxml 中使用数据 2.如何在 data 里面定义数据? 在页面对应的 .js 文件中,把数据定义到 data 对象中即可: 3. ...

  5. 备考CISP-PTE之文件上传

    upload-labs 直接下载放到phpstudy打开即可. 第一关 查看源码,可以看到js代码定义了一个checkFile函数来对上传的文件进行后缀检查,只允许上传jpg.png.gif文件. f ...

  6. Pthread 并发编程(三)——深入理解线程取消机制

    Pthread 并发编程(三)--深入理解线程取消机制 基本介绍 线程取消机制是 pthread 给我们提供的一种用于取消线程执行的一种机制,这种机制是在线程内部实现的,仅仅能够在共享内存的多线程程序 ...

  7. Windows之应用安装程序 —— winget

    大家都用过Linux中的应用程序安装工具,如yum.apt.rpm等工具进行安装自己想要的一些工具或则软件之类的,当然Linux操作系统还是很强大的有很多类似的命令来安装我们所需要的程序,但是wind ...

  8. 小米路由器局域网设备ping不通

    问题 手机和电脑在同一个局域网内,都连接上小米路由器,我发现电脑部署的服务局域网设备都访问不到,甚至ping不到,排除了防火墙问题,最终发现是路由器一个设置导致的. 解决 将原来的混合加密,更换为强加 ...

  9. 关于mysql在linux(deb系)遇到的问题及解决方法

    前言 当我在树莓派上安装 mysql 数据库的时候,默认安装的是mariadb 数据库,不过没什么区别(在我看来),然后就是闹心的解决各种问题了 1. mysql 在root用户下无密码登录问题 这个 ...

  10. Spring Security(8)

    您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来- 之前虽然实现了角色和权限之间的简单配对,但是如果每一个角色都要重新来过一次,就有点呆板了.如果能够配置一个「角色模板」,再通过这个模板来配置其他 ...