《C#高级编程》【第二章】核心C#编程 -- 学习笔记

之前准备省赛,没有时间学这个。现在省赛结束了,时间稍微多了一些所以准备学一点,由于这次省赛的成绩不是很好,所以我应该还是把主要的时间花在算法上。C#的话只能每周花点时间看看。由于没有用太多的时间来学习,所以就想以博客的形式记录自己学习历程。同时在总结归纳的过程中,应该可以使我对它的理解会更加深刻一些。 --- 前言

话说,"Hello World!"是每个程序员接触一门语言的第一个程序,当然作为 将来的程序员的 我也一样不例外,我的"Hello World!"

using System;

namespace MyFirstProgram
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            Console.ReadKey();
        }
    }
}

虽然“Hello World!”,已经写过好几遍,但还是有种激动的感觉。(可能是我比较Low

C#作为C开头的语言,其带有的C风格,还是对学过C\C++的同学比较友好,感觉比较舒服。

C#与C\C++对比,不同之处:

1、变量上多了一个类型推断 var 关键字。编译器可以根据变量的初始化值进行推断 变量的类型。

var a = "hello"; //像这样,编译器就会推断出变量 s 为 string 类型

2、预定义数据类型中,C#分为了 值类型 和 引用类型,值类型和C\C++差不多,引用类型感觉有点新,其实就有点像C++的引用

using System;

namespace MyFirstProgram
{
    class Vector
    {
        public int value;
    }
    class Program
    {
        static void Main(string[] args)
        {
            Vector x,y;
            x = new Vector();
            x.value = 30;
            y = x;
            Console.WriteLine(y.value);
            y.value = 50;
            Console.WriteLine(x.value);
            Console.ReadKey();
        }
    }
}

输出结果为 30和50。有没发现什么,相信你已经发现,上面的运行结果告诉我们以上代码中就只有一个对象。为什么呢?

因为在C#中 要创建真正的对像就必须使用 new 关键字。

Vector x,y;   //如果是这样,那么系统都不会创建真正的对象

比如,string类,在C#中string类型是一个引用类型。string对象会被分配到堆上,而不是栈上。到一个字符串变量赋予另一个字符串时,会得到对内存中同一个字符串的两个引用

string str1, str2;
str1 = "hello World";
str2 = str1;

像上述例子,str1,str2都是指向“hello World”的引用并不是真正的对象。但是string与其他常见的引用类型又有一些区别:比如,字符串是不能修改的。修改其中一个字符串,就会创建一个全新的string对象,而另一个字符串将不会改变。C#中对于斜杠等字符输出还引入了一个更好的方法。在字符串前加‘@’,在这个字符后的所有的字符都只有他原来的含义----它们不会被解释为转义字符:

string filePath = @"C:\CSharp\MyfirstProgram.cs";

3、在bool类型上,C#不会将 1 作为 true, 0 作为 false。 bool的值 就是 True 和 False,不是 1和 0.

4、在循环控制上,其多了一个 foreach 循环。foreach可以循环迭代集合中的每一项。

5、C#与C++的switch不同之处:①C#的switch 的case子句的排放顺序无关紧要,甚至可以将default 放在最前面。②在C#中,可以将字符串作为测试的变量。

6、在注释上,C#支持C\C++的注释方法,同时引入了XML格式的文档说明,这个注释是以3条斜杠(///)开头,且是单行注释。C#编译器可以把XML元素从特定的注释中提取出来,并使它生成一个XML文件。要让程序集生成XML文档,需要在编译时指定 /doc选项后跟创建的文件名

C#的语法风格与C++比较接近,以上是其存在的一些区别。但是C#的类型检查机制,比C++严格许多。比如,若是使用未赋值的变量,那么编译器将会报错。在C++中,只用一个警告甚至在有的IDE上连警告都没有。



时间: 2024-08-29 16:22:29

《C#高级编程》【第二章】核心C#编程 -- 学习笔记的相关文章

<<深入Java虚拟机>>-第二章-Java内存区域-学习笔记

Java运行时内存区域 Java虚拟机在运行Java程序的时候会将它所管理的内存区域划分为多个不同的区域.每个区域都有自己的用途,创建以及销毁的时间.有的随着虚拟机的启动而存在,有的则是依赖用户线程来启动和销毁. 程序计数器 程序计数器是一块很小的区域,可以看做是用来表示线程所执行到字节码的某一行的行号指示器. 在Java虚拟机中,多线程是线程之间轮流切换并分配处理器的执行时间来实现的,为了线程切换之后能够继续回到之前的代码行继续执行,所以每个线程都有一个“线程私有”的程序计数器. 如果线程正在

c#高级编程第七版 学习笔记 第二章 核心c#

第二章 核心C# 本章内容: 声明变量 变量的初始化和作用域 C#的预定义数据类型 在c#程序中使用条件语句.循环和跳转语句执行流 枚举 名称空间 Main()方法 基本的命令行c#编译器选项 使用System.Console执行控制台I/O 使用内部注释和文档编制功能 预处理器指令 C#编程的推荐规则和约定 2.1 第一个c#程序 2.1.1 代码 using System; namespace Wrox { Public class MyFirstClass { static void Ma

C++ 编程第二章小结

switch()用法的注意事项 1:switch语句中的表达式只能是整形数据,字符型数据和枚举型数据,case后面的产量表达式的类型必须与switch括号后面的类型相匹配 2:各个case(包括default)的出现次序可以任意,每个case在带有break的前提下,case的次序不影响执行结果 循环设计 循环设计的几种分类方法这里介绍几种 1:字符图形类 2:素数判断类 3:逻辑判断类 4:级数逼近类 a:对于图形类的基本循环格式一般是 for(int i = 1; i < 10 ;i ++)

Delphi知识点与技术概述【第二章 核心类库】

第三章 核心类库 Delhpi可视化编程依赖于庞大的巨型类库.Delphi 标准类库包含了数百个类以及数以千计的方法. 内容提要: *RTL包.CLX与VCL CLX用作linux中,VCL用作Windows中 VCL是一个独立的大型库(组件,控件,非可视组件,数据集合,数据感应控件,等等). 库的核心非可视化组件与类属于RTL包. Vcl结构: CLX结构: BaseCLX VisualCLX DateCLX NetCLX 库的VCL专用部分: VCL还提供了Windows专用的: Delph

《SAS编程和数据挖掘商业案例》学习笔记# 19

继续<SAS编程与数据挖掘商业案例>学习笔记,本文側重数据处理实践.包含:HASH对象.自己定义format.以及功能强大的正則表達式 一:HASH对象 Hash对象又称散列表,是依据关键码值而直接进行訪问的数据结构.是依据关键码值而直接进行訪问的数据结构. sas提供了两个类来处理哈希表.用于存储数据的hash和用于遍历的hiter,hash类提供了查找.加入.改动.删除等方法,hiter提供了用于定位和遍历的first.next等方法. 长处:键值的查找是在内存中进行的,有利于提高性能:

《SAS编程与数据挖掘商业案例》学习笔记之十九

继续<SAS编程与数据挖掘商业案例>学习笔记,本文侧重数据处理实践,包括:HASH对象.自定义format.以及功能强大的正则表达式 一:HASH对象 Hash对象又称散列表,是根据关键码值而直接进行访问的数据结构,是根据关键码值而直接进行访问的数据结构, sas提供了两个类来处理哈希表,用于存储数据的hash和用于遍历的hiter,hash类提供了查找.添加.修改.删除等方法,hiter提供了用于定位和遍历的first.next等方法. 优点:键值的查找是在内存中进行的,有利于提高性能: h

《SAS编程与数据挖掘商业案例》学习笔记之十六

<SAS编程与数据挖掘商业案例>学习笔记,本次重点:sas宏变量 内容包含:宏变量.宏函数.宏參数.通配函数.字符函数.计算函数.引用函数.宏语句.宏应用 1.宏触发器: %name-token:是一个宏语句或宏函数 &name-token:是一个宏变量引用 宏变量不依赖于sas数据集,能够在不论什么一个除数据行以外的地方定义和引用宏变量,一般定义的宏变量为局部变量,除非使用%global,定义宏变量用%let,显示宏变量用%put,调用宏变量用&. eg: %let a=xx

[原创译书] JS函数式编程 第二章总结

?? Functional Programming in Javascript 主目录第二章 函数式编程基础上一节 函数式程序员的工具集 第二章总结 为了理解函数式编程,这章覆盖了很大范围的主题.首先我们分析了一个编程语言的函数式是什么意思, 并且评估了Javascript函数式编程能力.接下来,我们用Javascript实现了一些函数式编程的核心概念, 并展示了一些Javascript内建的函数式编程函数. 尽管Javascript有一些函数式编程的工具,它函数式编程核心的大部分仍被隐藏着,并

Javascript高级程序设计——第二章:在HTML中使用Javascript

第二章:在HTML中使用Javascript <script>元素 向HTML页面中插入Javascript的主要方法,就是使用<script>元素,<script>元素有六个属性: async:可选.表示应该立即下载脚本,但不妨碍页面的其他操作,比如下载其他资源或等待加载其他脚本,只针对外部脚本有效. defer:可选.表示脚本可以延迟到文档完全被解析和显示之后再执行.只针对外部脚本有效. src:可选.表示包含要执行代码的外部文件. type:可选.表示编写代码使用

【Python灰帽子--黑客与逆向工程师的Python编程之道】我的学习笔记,过程.(持续更新HOT)

我的学习笔记---python灰帽子 世界让我遍体鳞伤,但伤口长出的却是翅膀. -------------------------------------------- 前言 本书是由知名安全机构ImmunityInc的资深黑帽JustinSeitz先生主笔撰写的一本关于编程语言Python如何被广泛应用于黑客与逆向工程领域的书籍. 很庆幸,我会对这方面感兴趣,初中寥寥草草的涉及过一滴点逆向工程只是为了破解某软件刷刷QB啥,当然那是以前..现在回想起来也有点自娱自乐的感觉...接下来这会成为这几