变量的初始化和作用域

  初始化

    C#有两个方法可以一确保变量在使用前进行了初始化:

    • 变量是字段,如果没有显式初始化,创建这些变量时,其默认值为0。
    • 方法的局部变量必须在代码中显式初始化,之后才能在语句中使用,如果在初始化之前使用了他的值,报错。

  作用域

    如果局部变量作用域冲突,报CS0136错。

    字段与局部变量冲突,隐藏掉字段,访问被隐藏的实例字段用this关键字,静态字段使用object.fieldname。

  常量

    常量的特点:

    • 常量必须在声明时初始化,指定其值后将不允许变更。
    • 常量的值必须在编译时用于计算,不能从变量中提取值。
    • 常量总是静态的,不允许使用static关键字进行修饰。

  常量的优点:

    • 易于阅读
    • 易于修改
    • 易于避免出错

预定义数据类型

  值类型与引用类型

  概念与存储方法的区别,参考第一章。

  引用类型

    要创建对象必须使用new关键字,将一个引用类型赋值给另一个引用类型得到的只是它的地址,会随着它的更改而更改。如:

   

         Test x,y;

      x testX = new Test();

      y testY = x;

      testX.value =;    //这条语句执行后testX与testY的value属性的值都会为

  CTS类型

  C#认可的基本预定义类型并没有内置在C#中,而是内置于.NET Framework中。

  decimal不是.NET Formework中内置类型,会造成性能损失。

  bool类型不能用0来表示false,非0表示true。

  所有内置类型都继承Object类型。

  string 的不可变性:如上述代码中的testX和testY如果他们是string类型,当testX所指向的string改变时,会重新在托管堆中创建出一个新的string并指向它,testY所指向的值也就不会被更改。

流控制

  条件语句

    if ,else if,else。

  switch语句

case语句的值必须要是常量表达式,不允许使用变量。

与C++的区别:激活了前一个case不会自动激活后一个case,且每一个case必须用break否则报错;可以把字符串作为测试变量。

可以使用goto "标签"经行跳转。

case为空则不需要break。

循环

for 与 while的区别:for适合可预测次数的循环,while适合不可预测次数的循环。

foreach

要实现foreach的遍历,类中就必须实现IEnumerable接口。

foreach中不能改变每一项的值。

跳转语句

goto

break

跳出当前循环

continue

跳过此次循环

return

退出当前方法

枚举

一旦代码编辑好,枚举就成为基本类型。

名称空间(命名空间)

与文件或组件不同,名称空间是一种逻辑组合,而不是物理组合。

一般名称空间可接受的格式为CompanyName.ProjectName.StstemSection。

名称空间别名的语法:

using slias = NamespaceName;

命名空间修饰符为 “::” 。

 //using System;
 using TestSystem = System;

 namespace 命名空间别名
 {
     class Program
     {
         static void Main(string[] args)
         {
             TestSystem::Console.WriteLine("This is a C# Progam");
             TestSystem.Console.ReadKey();
         }
     }
 }

命名空间别名演示

预编译

#if #elif 支持一组逻辑运算符“!”、“==”、“!+”、“||”。

C#编程规则

标识符规则

    • 可以包含数字字符,但是它们他们必须以字母或下划线开头。
    • 不能使用C#关键字作标识符。

用户约定

规则应该是一个正确的决策,而不是一种束缚。

    1. 命名约定

Pascal:名称空间、类、函数名。

Camel:类中的字段(最好加“_”为前缀能更直观的知道这是个字段)、方法的参数。

    1. 名称风格

名称/命名的风格应当尽量保持一致。

    1. 命名空间的名称

命名空间是.NET区别共享程序集中对象名的唯一方法。

Microsoft建议使用如下名称空间:<CompanyName>.<TechnologyName>

    1. 名称和关键字

属性和方法的使用

如果该对象的外观像一个对象,就用属性来表示它,即:

      • 客户端医改能读取它的值,最好不要使用只写属性。
      • 读取该值不应该花他长时间。
      • 不应有负面效应。
      • 可以按任意顺序设置属性。
      • 顺序读取属性也应该有相同的效果。

字段的用法

字段总应该是私有的。

本文部分摘录自C#高级编程第九版,其余由Earl Jones整理及总结而成,本人能力有限,如有纰漏望及时指出。

如果你喜欢此书,或想了解更详细内容,请购买正版书籍进行查阅。

转载请注明出处。

2016-05-07 22:29:18

C#高级编程笔记之第二章:核心C#的更多相关文章

  1. C#高级编程笔记之第一章:.NET体系结构

    1.1 C#与.NET的关系 C#不能孤立地使用,必须与.NET Framework一起使用一起考虑. (1)C#的体系结构和方法论反映了.NET基础方法论. (2)多数情况下,C#的特定语言功能取决 ...

  2. ASP.NET MVC5 高级编程-学习日记-第二章 控制器

    2.1 控制器的角色 MVC模式中的控制器(Controller)主要负责响应用户的输入,冰球在响应时修改模型(Model).通过这种方式,MVC模式中的控制器主要关注的是应用程序流.输入数据的处理, ...

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

    第二章 核心C# 本章内容: 声明变量 变量的初始化和作用域 C#的预定义数据类型 在c#程序中使用条件语句.循环和跳转语句执行流 枚举 名称空间 Main()方法 基本的命令行c#编译器选项 使用S ...

  4. 读《C#高级编程》第1章问题

    读<C#高级编程>第1章 .Net机构体系笔记 网红的话:爸爸说我将来会是一个牛逼的程序员,因为我有一个梦,虽然脑壳笨但是做事情很能坚持. 本章主要是了解.Net的结构,都是一些概念,并没 ...

  5. Python黑帽编程 2.0 第二章概述

    Python黑帽编程 2.0 第二章概述 于 20世纪80年代末,Guido van Rossum发明了Python,初衷据说是为了打发圣诞节的无趣,1991年首次发布,是ABC语言的继承,同时也是一 ...

  6. C#高级编程9 第17章 使用VS2013-C#特性

    C#高级编程9 第17章 使用VS2013 编辑定位到 如果默认勾选了这项,请去掉勾选,因为勾选之后解决方案的目录会根据当前文件选中. 可以设置项目并行生成数 版本控制软件设置 所有文本编辑器行号显示 ...

  7. Stealth视频教程学习笔记(第二章)

    Stealth视频教程学习笔记(第二章) 本文是对Unity官方视频教程Stealth的学习笔记.在此之前,本人整理了Stealth视频的英文字幕,并放到了优酷上.本文将分别对各个视频进行学习总结,提 ...

  8. Android高级编程笔记(四)深入探讨Activity(转)

    在应用程序中至少包含一个用来处理应用程序的主UI功能的主界面屏幕.这个主界面一般由多个Fragment组成,并由一组次要Activity支持.要在屏幕之间切换,就必须要启动一个新的Activity.一 ...

  9. C#高级编程9 第18章 部署

    C#高级编程9 第18章 部署 使用 XCopy 进行部署 本主题演示如何通过将应用程序文件从一台计算机复制到另一台计算机来部署应用程序. 1.将项目中生成的程序集复制到目标计算机,生成的程序集位于项 ...

随机推荐

  1. Dynamics CRM2011/2013 站点地图sitemap的翻译

    实体.属性字段.ribbon等的翻译可以通过解决方案来解决(具体可见我前面的博客:http://blog.csdn.net/vic0228/article/details/37690913),但解决方 ...

  2. 15_Android中任务栈

     1.一个应用程序一般都是由多个activity组成的. 2.任务栈(task stack)(别名backstack后退栈)记录存放用户开启的activity的. 3.一个应用程序一被开启系统就给 ...

  3. 【算法导论】最小生成树之Kruskal法

    在图论中,树是指无回路存在的连通图.一个连通图的生成树是指包含了所有顶点的树.如果把生成树的边的权值总和作为生成树的权,那么权值最小的生成树就称为最小生成树.因为最小生成树在实际中有很多应用,所以我们 ...

  4. libevent之event

    就如libevent官网上所写的“libevent - an event notification library”,libevent就是一个基于事件通知机制的库,可以看出event是整个库的核心.e ...

  5. RecyclerView notifyItem闪烁的问题

    之前我们做点赞,用listview做的话,就是在item实现点击后,写一个scal动画,不过现在都转到RecyclerView,那么要做这种效果于是做了一个notifyItemChanged()的操作 ...

  6. java--GUI(图形用户接口)

    转载请申明出处:http://blog.csdn.net/xmxkf/article/details/9795435 day22 01-GUI(概述) GUI(图形用户界面) 1. GUI(Griph ...

  7. C++之虚函数

    <span style="font-size:18px;">#include <iostream> using namespace std ; class ...

  8. AndroidStudio加快Gradle速度的方法-android study之旅(103)

    方法1 打开setting,搜索compiler ,按照如图配置,不要问我为什么,宝宝心里苦~ 方法2 到开项目的根目录的gradle.properties ,把下面的注释解除 org.gradle. ...

  9. 巨高兴,偶的文章 “如何在服务器上配置ODBC来访问本机DB2for Windows服务器”被推荐至CSDN博客首页

    非常高兴,偶的文章 "如何在服务器上配置ODBC来访问本机DB2for Windows服务器"被推荐至CSDN博客首页,截图留念.                  文章被推荐在C ...

  10. C#在PDF中如何以不同颜色高亮文本

    高亮的文本有助于阅读者快速有效地获取文章关键信息.在PDF文件中,对文章的不同文本,关键词.句等进行不同颜色的文本高亮操作,可以使阅读者在阅读过程中有效地区分不同高亮颜色文本的意义.在下面的示例中,我 ...