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

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

运行我们安装好的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. created与mounted执行顺序(关于微任务与宏任务)

    1.ps:只要你只使用created或者mounted中的一个不就好了吗[dog].这样只要在第一个异步任务代码跳出前,嵌套第二个任务函数就好了 最后面的两个链接一个是微任务与宏任务的通俗例子,一个是 ...

  2. xmind下载安装破解版激活教程思维导图软件获取

    1.xmind下载解压压缩包就可以看到里面的文件,然后双击安装文件就可以开始安装了 2.安装Xmind程序双击之后会出现下面的流程,照着截图操作,不要乱点哈 切记切记!!这一步直接点击next,不要修 ...

  3. 第2-3-7章 个人网盘服务接口开发-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss

    目录 5.8 导入其他接口代码 5.8.1 接口导入-分页查询附件 5.8.2 接口导入-根据业务类型/业务id查询附件 5.9 导入网盘服务接口 5.9.1 导入FileController 5.9 ...

  4. 基于LSM树的存储机制简述

    下午听了关于MyRocks-PASV的研究讲座,很有意思所以学习了一下LSM树的一些简单的底层原理.现在整理一下 我们都知道目前Key:Value型的数据库普遍较之关系型数据库有着更好的表现,为什么会 ...

  5. 关于linux上实现arp攻击截取密码

    前言 这几天简单的研究了一下arp攻击,有一些进展,记录一下 环境准备 这里我是利用arpspoof 这个软件简单实现arp攻击,这个命令是属于dsniff 软件包中的 所以首先安装软件 sudo a ...

  6. 【每日一题】【直接循环&二分查找】2022年2月10日-NC32 求平方根

    描述实现函数 int sqrt(int x).计算并返回 x 的平方根(向下取整) 方法1:直接循环 import java.util.*; public class Solution { /** * ...

  7. JavaScript入门⑤-欲罢不能的对象原型与继承-全网一般图文版

    JavaScript入门系列目录 JavaScript入门①-基础知识筑基 JavaScript入门②-函数(1)基础{浅出} JavaScript入门③-函数(2)原理{深入}执行上下文 JavaS ...

  8. 猿人学web爬虫攻防大战

    这里有1.2.3.4.12.13.15题 1.第一题 import execjs import requests def get_response(): js_code = ""& ...

  9. MySQL单表查询(分组-筛选-过滤-去重-排序-分页-判断-正则)

    目录 一:单表查询 1.单表查询(前期准备) 2.插入记录(写入数据) 3.查询关键字 二:查询关键字之where 1.查询id大于等于3小于等于6的数据 2.查询薪资是20000或者18000或者1 ...

  10. 如何通过Java应用程序压缩PDF文档

    PDF文档是我们日常办公中使用最频繁的文档格式.但因为大多数PDF文档都包含很多页面图像或大量图片,这就导致PDF文档过大,处理起来较为麻烦.PDF文件过大,就会导致传输或者下载的速度变慢,也会增加传 ...