C#学习记录1——Hello World!

  现在是大二下学期,跟着学校的课在学习C#,之前学过的语言有C,C++,Java,还有一点HTML

之前从没写过这种博客,而且又是一边学一边写,所以不管是版面或是专业性的知识理解上可能都会有一些问题,希望大神给指正。。。

每次的博客基本分成两部分,第一部分先完成一个例子(外加一些简单的解释),第二部分有相关的解释来详细拓展

  C#是Microsoft推出的一种面向对象的编程语言,开发Windows相应的应用十分的方便

开发使用的软件是Microsoft Visual Studio(简称VS)

一、Hello World

  1.打开VS后,选择新建项目(文件——新建——项目)

  在新建项目窗口中,选择左侧模板中的“Visual C#”选项,然后选择中间“控制台应用程序”

  最后,将下面项目名称和存储位置设置好,点击确定

  如下图

  建立好的初始状态

  其中的一些代码及简单解释

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//using后面的一些东西叫做namespace,中文是命名空间,具体见解释1
namespace HelloWorld
{//这里就是把项目做成了namespace,个人理解就是为了日后的复用(此处不是很明白,求指教)
    class Program
    {
        static void Main(string[] args)//Main方法是CLR开始的第一个方法,也就是说运行时从这里开始
        {

        }
    }
}

  2.在Main()方法中敲入如下语句

static void Main(string[] args)
        {
            System.Console.WriteLine("Hello World!");
            //或 Console.WriteLine("Hello World!");等其他方法
            //具体区别见后面解释2

        }

  3.点击调试——开始执行(不调试)或快捷键CTRL+F5

  即可看到C#黑框的Hello World了<其他调试方法见解释3>

二、具体解释:

  1.关于namespace

  这个namespace我之前也没接触过,它可以限定名字的作用域,防止名字的冲突,另外还可用于代码的复用。

  所以项目一开始的using就基本等同于C++里面的include,以及Java里的import

  2.关于通过其他方法来显示“Hello World”

    (1)namespce

    下面两句话的结果都会调用System命名空间中,Console类的WriteLine函数,将“Hello World!”写出到标准输出上。
            其区别在于:第一个语句使用了这个函数的全路径(即将函数所属的位置详细的描述), 这样不会引起任何的歧义(也就是前面说的namespace的优点);

          而第二个语句则是直接使用Console类来调用函数。之所以能这样做是因为在项目的一开始我们加入了using System;这样的一句话。这样的话,程序在使

          用System命名空间中的类型时就不用每次都在前面添加命名空间的名字了。   

System.Console.WriteLine("Hello World!");
Console.WriteLine("Hello World!");

    需要说明:1.第二种方法虽然看上去是简化了程序的语句,但某种程度上说它就失去了namespace的最大优点,即使用不同namespace的同名内容;

         2.using后面一定要跟一个命名空间的名字。如下面的一句话就会引起错误

using System.Console;//注意Console是System下的一个类,而不是命名空间
class Hello
{
    static void Main()
    {
         WriteLine("Hello World");
    }
}

          显示的错误类型

    (2)使用Main()方法的传入参数

       首先点击项目——XXX(项目名称)属性

      之后再出现的窗口中选中左侧的“调试”,并在右侧“命令行参数”中敲入一些参数

      然后点击属性窗口选项卡旁边的×,并在Main()中添加如下语句

Console.WriteLine(args[0] + " " + args[1] + " " + args[2]);//args的个数根据你输入到参数列表的单词的个数

      然后点击调试——启动调试(F5),再点击调试——开始执行(不调试)(CTRL+F5)。就可以看到你输入到参数中的单词了

    (3)使用类与对象

    尝试在项目中新建类,并在Main()方法中创造其对象,来调用WriteLine()方法

    首先,在右侧项目名称上单击右键,选择添加——类

       在出现的窗口中选择“类”,下方填写类的名称,确定

      在新建的类中敲入代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HelloWorld
{
    class Example
    {
        public static void StaticExampleWrite(string[] words)
        {
            Console.WriteLine("static method: " + words[0] +" "+ words[1]+" "+words[2]);
        }
      // static静态方法,从属于类本身。调用时可以通过对象,也可以直接通过了类来调用。
      //一直在用的WriteLine也是Console里面的静态方法,可以通过Console类来直接调用
        public void ExampleWrite(string[] words)
        {
            Console.WriteLine("non-static method: " + words[0] + " " + words[1] + " " + words[2]);//非静态方法,属于具体的每个对象
        }
    }
}

      下面回到Program.cs文件,加入下面的语句

Example.StaticExampleWrite(args);//通过类直接调用
Example examp = new Example();//创建类的对象
examp.ExampleWrite(args);   //通过具体对象来调用

      注意,非静态方法不能通过类来直接调用

      然后点击调试——启动调试(F5),再点击调试——开始执行(不调试)(CTRL+F5)。

   3.关于调试

     前面一直是在整体的调试。缺点在于不能再调试过程中对具体的某些内容进行监控,并且如果出错,难以在整个程序中寻找错误。下面我们通过设置调试的断点来逐个

   语句或逐过程进行调试。这里两种方法有点不太理解。试了一下觉得好像逐语句能够到程序每一个正在执行语句的位置(如果调用了其他类的语句,则会转到所在类的位置

   ),而逐过程就是以Main()中的以整个一句(?)来进行调试??求指教

     断点可以在对应语句左侧单击左键设置,位置如下图的红色圆点

     在设置了断点之后,在点击F5进行调试,会发现程序会停在设置的断点位置,这里可以方便我们对一些参数进行查看,比如传入Main()方法的string数组args,将

  鼠标放在args之上,会浮出args参数的列表,点击左侧的三角来查看程序运行至此时args参数的具体内容,方便出错时进行修改

    4.修改控制台的显示效果

    控制台可以通过一些语句来更改显示的效果,如背景的颜色、字体的颜色等等

    例如,下面的代码的显示效果为

static void Main(string[] args)
        {
            Console.Title = "C# Hello World!";
            Console.WindowHeight = 30;//设置控制台窗口的高度
            Console.WindowWidth = 80;//设置控制台窗口的宽度
            Console.BackgroundColor = ConsoleColor.DarkRed;//背景色
            Console.ForegroundColor = ConsoleColor.Green;//前景色
            System.Console.WriteLine("Hello World!");
            Console.BackgroundColor = ConsoleColor.DarkMagenta;
            Console.ForegroundColor = ConsoleColor.White;
            Console.WriteLine(args[0] + " " + args[1] + " " + args[2]);
            Console.BackgroundColor = ConsoleColor.Gray;
            Console.ForegroundColor = ConsoleColor.White;
            Example.StaticExampleWrite(args);
            Console.BackgroundColor = ConsoleColor.DarkRed;
            Console.ForegroundColor = ConsoleColor.Green;
            Example examp = new Example();
            examp.ExampleWrite(args);
        }

时间: 2024-12-16 02:12:34

C#学习记录1——Hello World!的相关文章

Python学习记录-2016-12-17

今日学习记录 模块: import os#导入os模块 import sys#导入sys模块 os.system("df -h")#执行df -h命令 cmd_res = os.popen("df -h").read()#将命令的返回结果赋值给cmd_res,如果不加入.read()会显示命令的返回加过在内存的位置 print(sys.path)#显示系统变量路径,一般个人模块位于site-packages下,系统模块位于lib下 print(sys.argu[2]

Objc基础学习记录5

NSMutableString类继承的NSString类. NSMutableString是动态的字符串. 1.appendingString 方式: 向字符串尾部添加一个字符串. 2.appendingFormat:可以添加多个类型的字符串. int,chat float,double等 3.stringWithString 创建字符串, 4.rangeOfString 返回str1在另一个字符串中的位置. 5.NSMakeRange(0,3) 字符串0位到3位. 6.deleteCharac

Windows API 编程学习记录&lt;二&gt;

恩,开始写Windows API编程第二节吧. 上次介绍了几个关于Windows API编程最基本的概念,但是如果只是看这些概念,估计还是对Windows API不是很了解.这节我们就使用Windows API 让大家来了解下Windows API的用法. 第一个介绍的Windows API 当然是最经典的MessageBox,这个API 的作用就是在电脑上显示一个对话框,我们先来看看这个API的定义吧: int WINAPI MessageBox(HWND hWnd, LPCTSTR lpTe

Windows API 编程学习记录&lt;三&gt;

恩,开始写API编程的第三节,其实马上要考试了,但是不把这节写完,心里总感觉不舒服啊.写完赶紧去复习啊       在前两节中,我们介绍了Windows API 编程的一些基本概念和一个最基本API函数 MessageBox的使用,在这节中,我们就来正式编写一个Windows的窗口程序. 在具体编写代码之前,我们必须先要了解一下API 编写窗口程序具体的三个基本步骤:             1. 注册窗口类:             2.创建窗口:             3.显示窗口: 恩,

Python学习记录day6

Python学习记录day6 学习 python Python学习记录day6 1.反射 2.常用模块 2.1 sys 2.2 os 2.3 hashlib 2.3 re 1.反射 反射:利用字符串的形式去对象(默认)中操作(寻找)成员 cat commons.py #!/usr/bin/env python#_*_coding:utf-8_*_''' * Created on 2016/12/3 21:54. * @author: Chinge_Yang.''' def login(): pr

Python学习记录-2016-11-29

今日学习记录: 心灵鸡汤: 要有合适自己的目标,一个目标一个目标实现,切忌好高骛远: 最好的投资就是投资自己: 实现梦想 学习,学习,再学习: Talk is cheap. 从本身而言,余三十而立之年,从事测试行业7七年有余,一年半华为外包路由器,两年无线wifi测试,一年半网管软件测试,一年自动化测试经理,推行公司自动化测试进程,从开始的TCL,到现在的python,工欲善其事必先利其器,所以自己来学习,总体我认为我的目标是一直前进的,不断变化的,但是方向并没有大的错误,有些累,所以近期有些懈

程序的机械级表示学习记录

程序的机械级表示学习记录 X86的三代寻址方式 DOS时代的平坦模式,不区分用户空间和内核空间,很不安全. 8086的分段模式. IA32的带保护模式的平坦模式. 对于机械级编程的两种重要抽象 ISA:机械级程序的格式和行为,定义为指令集体系结构,它定义了处理器状态.指令的格式,以及每条指令对状态的影响. 虚拟地址:机器级程序使用的存储器地址,提供的存储器模型看上去是一个非常大的数组.存储器系统的实际实现是将多个硬件存储器和操作系统软件组合起来的. 在GCC中获得汇编代码与反汇编 获得汇编代码:

python 系统地学习记录

由头: python值得一学. 尝试一下写学习记录,看看效果. 1.记录一些不熟悉或者重要的知识点. 2.记录一些遇到的问题,标签 Question. 书:python基础教程(第2版) Chapter 1:基础知识 本章的内容熟悉即可. 比较重要的是字符串,单双引号转义,str,repr... Time 1.5 h  2015.8.31 23:09 版权声明:本文为博主原创文章,未经博主允许不得转载.

Java 静态内部类与非静态内部类 学习记录.

目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合,我并不是很清楚,留下一些值得思考的问题作为记录,说不定以后能自己来填.于是就会有这篇文章啦. 常规使用方法我也不想介绍,网上一大把,我就说说比较容易错的,值得注意的地方. 注意 这篇文章只是分享一下我对内部类的一些研究与困惑吧,说不定对大家有帮助,说不定能引导大家一起思考学习.Java语法知识其实

struts2 学习记录 之 国际化

struts2 接下来是国际化,如果一个系统想要被多个国家的人所用就不得不考虑国际化的问题,如果为每一个国家都开发一套系统维护起来会很麻烦,所以就有了个思想,那就是把动态的,用不同语言展示的部分,放到配置文件中,动态的从文件里读取想要展示的内容,不同国家的人就得到了不同的展示,这是一个很好的思想,所以我把它记录一下了,嘻嘻... 首先 struts2 要把它的配置文件写好,以中文和美式英语为例,配置文件如下: 配置文件是以键值对的形式存在的,且以properties结尾,命名也有一定的格式,如t