编程哲学之 C# 篇:005——"Hello,World!"
如第一章说明,程序员的创造能力最接近于神,那么从现在开始,让我们来开始愉快地创造世界吧!
用解决方案来管理我们的创作
运行我们安装好的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!"的更多相关文章
- 编程哲学之C#篇:02——学习思维
<代码大全>的第二章:介绍隐喻(类比)的思维方式, <经济学原理>的第二章:介绍怎么像经济学家一样思考, <计算机的心智操作系统之哲学原理>的第一章:介绍学习操作系 ...
- 编程哲学之C#篇:01——创世纪
我们能否像神一样地创建一个世界? 对于创建世界而言,程序员的创作能力最接近于神--相对于导演,作家,漫画家而言,他们创建的世界(作品)一旦完成,就再也不会变化,创建的角色再也不会成长.而程序员创建的世 ...
- 编程哲学之 C# 篇:007——如何创造万物
上帝拥有创建万物的能力,本文介绍创造万物的道,让你也拥有上帝般创造万物的能力! 道 中国哲学家,道家学派创始人--老子,在<道德经>写到: 道生一,一生二,二生三,三生万物 那么,是什么 ...
- Python黑帽编程2.1 Python编程哲学
Python黑帽编程2.1 Python编程哲学 本节的内容有些趣味性,涉及到很多人为什么会选择Python,为什么会喜欢这门语言.我带大家膜拜下Python作者的Python之禅,然后再来了解下P ...
- Linux shell脚本编程基础之练习篇
shell脚本编程基础之练习篇. 1.编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息. #!/bin/bash ] then echo "请输入一个参数& ...
- 浅谈.Net异步编程的前世今生----APM篇
前言 在.Net程序开发过程中,我们经常会遇到如下场景: 编写WinForm程序客户端,需要查询数据库获取数据,于是我们根据需求写好了代码后,点击查询,发现界面卡死,无法响应.经过调试,发现查询数据库 ...
- Scala进阶之路-并发编程模型Akka入门篇
Scala进阶之路-并发编程模型Akka入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Akka Actor介绍 1>.Akka介绍 写并发程序很难.程序员不得不处 ...
- 浅谈.Net异步编程的前世今生----EAP篇
前言 在上一篇博文中,我们提到了APM模型实现异步编程的模式,通过使用APM模型,可以简化.Net中编写异步程序的方式,但APM模型本身依然存在一些缺点,如无法得知操作进度,不能取消异步操作等. 针对 ...
- 从编程哲学到开发应用:Spring的初步应用
一.前言 在学习Spring的过程中,我们学习了很多东西,可是实际应用中,我们究竟用到了那些?常用的又是那种方法呢? 二.书上与开发的差异 1.IOC 1) IOC,控制反转,是Spring框架的核心 ...
- 并发编程之第三篇(synchronized)
并发编程之第三篇(synchronized) 3. 自旋优化 4. 偏向锁 撤销-其它线程使用对象 撤销-调用wait/notify 批量重偏向 批量撤销 5. 锁消除 4.7 wait/notify ...
随机推荐
- 2022年Python顶级自动化特征工程框架⛵
作者:韩信子@ShowMeAI 机器学习实战系列:https://www.showmeai.tech/tutorials/41 本文地址:https://www.showmeai.tech/artic ...
- 嵌入式-C语言基础:数组指针
定义一个数组指针,指向二维数组: int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int (*p)[4];//定义二维指针数组 p=a;//指向二维数组 ...
- 什么是CLR?
CLR翻译为"公共语言运行库",全称是Common Language Runtime,它是一个可以由多种语言使用的"运行时",CLR的核心功能如内存管理,程序集 ...
- 微信小程序的学习(二)
一.数据绑定 1.数据绑定的基本原则 在 data 中定义数据 在 wxml 中使用数据 2.如何在 data 里面定义数据? 在页面对应的 .js 文件中,把数据定义到 data 对象中即可: 3. ...
- 备考CISP-PTE之文件上传
upload-labs 直接下载放到phpstudy打开即可. 第一关 查看源码,可以看到js代码定义了一个checkFile函数来对上传的文件进行后缀检查,只允许上传jpg.png.gif文件. f ...
- Pthread 并发编程(三)——深入理解线程取消机制
Pthread 并发编程(三)--深入理解线程取消机制 基本介绍 线程取消机制是 pthread 给我们提供的一种用于取消线程执行的一种机制,这种机制是在线程内部实现的,仅仅能够在共享内存的多线程程序 ...
- Windows之应用安装程序 —— winget
大家都用过Linux中的应用程序安装工具,如yum.apt.rpm等工具进行安装自己想要的一些工具或则软件之类的,当然Linux操作系统还是很强大的有很多类似的命令来安装我们所需要的程序,但是wind ...
- 小米路由器局域网设备ping不通
问题 手机和电脑在同一个局域网内,都连接上小米路由器,我发现电脑部署的服务局域网设备都访问不到,甚至ping不到,排除了防火墙问题,最终发现是路由器一个设置导致的. 解决 将原来的混合加密,更换为强加 ...
- 关于mysql在linux(deb系)遇到的问题及解决方法
前言 当我在树莓派上安装 mysql 数据库的时候,默认安装的是mariadb 数据库,不过没什么区别(在我看来),然后就是闹心的解决各种问题了 1. mysql 在root用户下无密码登录问题 这个 ...
- Spring Security(8)
您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来- 之前虽然实现了角色和权限之间的简单配对,但是如果每一个角色都要重新来过一次,就有点呆板了.如果能够配置一个「角色模板」,再通过这个模板来配置其他 ...