编程哲学之 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 ...
随机推荐
- .Net6新版本的AssemblyLoadContext 加载程序集和卸载程序集
准备俩个项目 第一个是控制台 第二个项目是类库 类库项目中只有一个示例class 将类库的代码生成dll 并且设置属性为复制到输出目录 using System.Runtime.Loader; var ...
- 【ELK解决方案】ELK集群+RabbitMQ部署方案以及快速开发RabbitMQ生产者与消费者基础服务
前言: 大概一年多前写过一个部署ELK系列的博客文章,前不久刚好在部署一个ELK的解决方案,我顺便就把一些基础的部分拎出来,再整合成一期文章.大概内容包括:搭建ELK集群,以及写一个简单的MQ服务. ...
- 查看服务器出口ip
[root@iZap201hv2fcgry1alvbznZ ~]# curl cip.cc IP : xxx.xxx.xx.xx 地址 : 中国 浙江 绍兴 运营商 : 移动 数据二 : 浙江省绍兴市 ...
- Spring校验器实例
@size (min=3, max=20,message="用户名长度只能在3-20之间") @size (min=6, max=20,message="密码长度只能在6 ...
- DevExpress中GridControl控件焦点改变时触发事件
FocusedRowObjectChanged 事件.可以在焦点改变一行的时候触发对应的事件. 做一个记录 大家如果有问题可以 Console.WriteLine("加群"+&qu ...
- 基于LSM树的存储机制简述
下午听了关于MyRocks-PASV的研究讲座,很有意思所以学习了一下LSM树的一些简单的底层原理.现在整理一下 我们都知道目前Key:Value型的数据库普遍较之关系型数据库有着更好的表现,为什么会 ...
- java基础知识-lambda表达式
一.什么是lambda? 在Java中,我们可以将一个值赋值给一个Java变量. int aValue = 129; String aString = "hello world"; ...
- 关于python函数传参
必须参数 最常见的传参 def say(arg): print(arg) say("Hello world") 输出: Hello world 默认参数 def say(arg, ...
- SpringCloud Alibaba(二) - Sentinel,整合OpenFeign,GateWay服务网关
1.环境准备 1.1Nacos 单机启动:startup.cmd -m standalone 1.2 Sentinel 启动命令:java -Dserver.port=8858 -Dcsp.senti ...
- tomcat 随windows启动
有时候服务器会突然断电,维护管理员只会帮我们启动服务器,但是不会不会帮我们启动Tomcat. 1.进入tomcat的bin文件夹,找到startup.bat,右键生成快捷方式到桌面. 2.点击桌面左下 ...