编程哲学之 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 ...
随机推荐
- 统计Oracle数据库某个用户下面的对象个数
统计某个用户下面的对象个数 包括表,视图,同义词,函数,存储过程,包,触发器,索引,约束,序列. 1. sql语句 SELECT (SELECT COUNT(*) FROM USER_TABLES) ...
- LoadRunner11脚本小技能之添加请求头+定义变量+响应内容乱码转换打印+事务拆分
一.添加请求头 存在一些接口,发送请求时需要进行权限验证.登录验证(不加请求头时运行脚本,接口可能会报401等等),所以需要在脚本中给对应请求添加请求头.注意:请求头需在请求前添加,包含url类.su ...
- 1.python基础使用
1.git简介 git是一个免费的开源的分布式版本控制系统,可以快速高效的处理从小型到大型项目的所有事务 在实际工作中可以保留项目的所有版本,可以快速的实现版本的回滚和修改 git整体可以分为4个区域 ...
- 【深入浅出 Yarn 架构与实现】2-4 Yarn 基础库 - 状态机库
当一个服务拥有太多处理逻辑时,会导致代码结构异常的混乱,很难分辨一段逻辑是在哪个阶段发挥作用的. 这时就可以引入状态机模型,帮助代码结构变得清晰. 一.状态机库概述 一)简介 状态机由一组状态组成: ...
- JavaScript代码是怎么在浏览器里面运行起来的?
JavaScript代码是怎么在浏览器里面运行的?下面简单探索一下 浏览器内核 浏览器内核(Rendering Engine),常见的叫法如:排版引擎.解释引擎.渲染引擎,现在流行称为浏览器内核. 浏 ...
- Spring Boot中@Import三种使用方式!
需要注意的是:ImportSelector.ImportBeanDefinitionRegistrar这两个接口都必须依赖于@Import一起使用,而@Import可以单独使用. @Import是一个 ...
- 一文讲透CabloyJS全栈框架的来龙去脉
本文受众 咱们做软件开发,就好比是建造一幢幢房屋,一座座桥梁,既可以是北方宫殿的巍峨,也可以有南方庭院的雅致,更可以是横跨群山的峻险与孤悬.那么,不同的语言.不同的框架也都由其内在的秉质吸引着一批粉丝 ...
- cv2.imread opencv读取不到图片问题
解决办法 cv2.imread 路径中包含中文,改为英文 其他 这个问题解决了很久,都属于库的问题
- 关于Module Not Found Error No module named Crypto解决
前言 之前就遇到这个问题, 当然是windows上具有的问题 问题描述 from Crypto.Cipher import AES 出现 ModuleNotFoundError: No module ...
- c++详细学习——继承
通常讲父类(parrent)-子类(child).基类(base)-派生类(derived)和超类(super)-子类(sub) 1 最基础的写法 以下例子为最基本的写法,默认构造 1 enum Ge ...