C#基础语法(二)
四.CTS类型
C#认可的基本预定义类型并没有内置于C#语言中,而是内置于.NET Framework中。
例如,在C#中声明一个int类型的数据时,声明的实际上是.NET结构System.Int32的一个实例。这表示在语法上,可以把所有的基本数据类型
看成支持某些方法的类。
把int i 转化为string, string s = i.ToString();
在这种便利的语法背后,类型实际上仍存储为基本类型。基本类型在概念上用.NET 结构表示,所以没有性能损失。
C#有15个预定义类型,string,object是引用类型。
五.枚举
public enum TimeDay
{
Morning=0,
Afternoon = 1,
Evening=2
}
1.枚举是用户定义的整数类型。
2.从长远来看,创建枚举可以节省大量时间,减少许多麻烦。使用枚举比使用整数的优势:
*枚举可以使代码更易于维护,有助于确保给变量指定合法的,期望的值;
*枚举使代码更清晰,用描述性的名称表示整数值,而不是用含义模糊,变化多端的数来表示;
3.在C#中,枚举的真正强大之处是它们在后台会实例化为派生于基类System.Enum的结构。这表示可以对它们调用方法,执行有用的任务。
TimeDay td =TimeDay.Afternoon;
Console.WriteLine((td.ToString());
注意因为.NET Framework的执行方式,在语法上把枚举当成结构不会造成性能损失。实际上,一旦代码编译好,枚举就成为基本类型,
与int和float类似。
4.从字符串中获取枚举值
TimeDay td = (TimeDay)Enum.Parse(typeof(TimeDay),"afternoon",true);
Console.WriteLine((int)td);
要从字符串中转换,需要使用静态方法Enum.Parse,第一个参数是要使用的枚举类型,第二个是要转换的字符串,第三个是指定在转换时
是否忽略大小写。
Enum.Parse方法实际上返回一个对象引用(一个字符串)————我们需要把这个字符串显示转换为需要的枚举类型(是一个拆箱操作)。
六.名称空间
1.名称空间提供了一种组织相关类和其它类型的方式。与文件和组件不同,名称空间是一种逻辑组合,而不是物理组合。
2.不允许声明嵌套在另一个名称空间中的多部分的名称空间。
3.名称空间与程序集无关。同一个程序集中可以有不同的名称空间,也可以在不同的程序集中定义同一个名称空间中的类型。
4.名称空间的别名
如果名称空间的名称很长,又要在代码中多次引用,但不希望该名称空间的名称包含在using指令中(例如,避免类名冲突),就可以给
该名称空间指定一个别名:
using System.Text;
using System.Threading.Tasks;
namespace Wrox.ProC.basic
{
class NameSpaceEx
{
}
}
namespace ConsoleApplication1
{
using Intro = Wrox.ProC.basic;//给Wrox.ProC.basic指定别名Intro
class Program
{
static void Main(string[] args)
{
Intro::NameSpaceEx nex = new Intro.NameSpaceEx();//实例化NameSpaceEx对象,要使用::修饰符
}
}
}
七.Main()方法
C#程序是从Main()方法开始执行的,这个方法必须是类或结构的静态方法,并且其返回类型必须是int或void。
1.多个Main()方法
在编译C#控制台或Windows应用程序时,默认情况下,编译器会在类中查找与上述签名匹配的Main()方法,并使这个类方法称为程序的入口。
如果有多个Main()方法,编译器就会报错。
namespace Wrox
{
class Client
{
public static int Main()
{
MathEx.Main();
return 0;
}
}
class MathEx
{
static int Add(int x,int y)
{
return x+y;
}
public static int Main()
{
int i = Add(5,10);
return i;
}
}
}
但是可以使用/main选项,后跟Main()方法所属类的全名(包括名称空),明确告诉编译器把哪个方法作为程序的入口:
csc ConsoleApplication1.cs /main:Wrox.MathEx
2.给Main()方法传递参数
在调用程序时,可以让CLR包含一个参数,将命令行参数传递给程序。这个参数是一个字符串数组,传统上称为args(但C#可以接受任何名称)。
class Program
{
static void Main(string[] args)
{
for (int i = 0; i < args.Length; i++)
{
Console.WriteLine(args[i]);
}
}
}
使用命令行就可以编译这段代码。
ConsoleApplication1 a b c
a
b
c
八.C#预处理器指令
C#预处理器指令不会转化为可执行代码中的命令,但会影响编译过程的各个方面。例如,使用C#预处理器指令可以禁止编译器编译代码的某一部分。
如果计划发布两个版本的代码,即基本代码和拥有更多功能的企业版本,就可以使用预处理器指令。
C#提供了其它机制来实现C++指令的功能,如定制特性。C#并没有一个像C++那样的独立预处理器,所谓的预处理器指令实际上是由编译器处理的。
尽管这样,C#仍保留了一些预处理器指令名称,因为这些命令会让人觉得就是预处理器。
1.#define和#undef
#define DEBUG
它告诉编译器存在给定名称的符号,类似声明一个变量,但没有真正的值,只是存在而已。这个符号不是实际代码的一部分,而只是在编译器编译代码
时存在。在C#代码中没有任何意义。
#undef DEBUG
删除符号
#define 本身没有什么用,与其它预处理器指令(特别是#if)结合使用时,它的功能就很强大。
2.#if,#elif(=else if),#else和#endif
这些指令告诉编译器是否要编译某个代码块
#if DEBUG
//do something
#endif
#if,#elif还支持逻辑运算符“!”,"==","!=","||",与或...
3.#warning, #error
当编译器遇到它们时,会分别产生这两个指令后面的文本作为警告或错误。
#if DEBUG
#error "you didnot define DEBUG"
#endif
#warning "dont forget to remove"
4.#region和#endregion
#region和#endregion用于把一段代码标记为又给定名称的一个块
#region Member Field
int x;
double d;
#endregion
它们可以被某些编译器识别。
5.#pragma
#pragma指令可以抑制或还原指定的编译警告。
#pragma warning disable
int i;
#pragma warning restore
博客编写中可能存在错误,欢迎读者指正批评,邮箱15734108350@163.com.
C#基础语法(二)的更多相关文章
- Python 基础语法(二)
Python 基础语法(二) --------------------------------------------接 Python 基础语法(一) ------------------------ ...
- web前端学习python之第一章_基础语法(二)
web前端学习python之第一章_基础语法(二) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...
- 从零开始学 Web 之 ES6(四)ES6基础语法二
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- Python 1基础语法二(标识符、关键字、变量和字符串)
一.标识符 标识符就是程序员自己命名的变量名.名字需要有见名知义的效果,不要随意起名 :比如 a=1 a是个变量,a这个变量名属于标识符 1 company = '小米 2 employeeNum = ...
- python基础语法(二)
本文主要包括以下内容 函数 切片 迭代 列表生成式 生成器 迭代器 函数 定义函数 定义函数 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块 ...
- react基础语法二
这里只是对自己的学习进行一次总结,也是为了让自己以后如果长时间不使用快速记忆起来的笔记,如果想要学习,还是去官网看文档比较好一些.. 注意 下面的代码的 script标签的type类型都为 “text ...
- python3 基础语法(二)
一.python3的基本数据类型: 和其他语言一样都包含了以下数据类型: 类型 含义 实例 INT 整型(integer) 1 FLOAT 浮点型 1.1 BOOL 布尔值 TRUE/FALSE ST ...
- Java基础语法(二)之流程控制语句
流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块 .控制语句分为三类:顺序,选择和循环. “顺序结构”代表”先执行a,再执行b”的逻辑.比如,先找个女朋友, ...
- PHP入门笔记--基础语法二
一.函数 自定义函数 任何有效的 PHP 代码都有可能出现在函数内部,甚至包括其它函数和类定义. <?php function foo() { function bar() { echo &qu ...
- 【阿K学Python系列】一Python基础语法(二)
前言 通过上一章的学习[阿k学Python]一Python入门(一),我们已经初步了解到Python是一种解释型.面向对象.动态数据类型的高级程序设计语言,当然也是一门脚本语言,像前端需要学习的Jav ...
随机推荐
- cocos2d-x 在vs2010下的环境配置
cocos2d-x编译完成之后生成了一堆动态库,在window下分别为.dll , .lib ,其中*lib是在编译的时候需要链接的,*.dll是在运行的时候依赖的.所以当我们创建一个cocos2d- ...
- javascript使用技巧总结,不断更新...
1.使用a标签来获得当前页面相对地址的绝对地址 function getAbsoluteUrl(url){ var a; if(!a) a = document.createElement('a'); ...
- solidity mapping of mapping
solidity mapping of mapping,两层映射,用的时候可以像二维数组一样去访问和修改值,非常方便. 以下代码示例中的这一句: mapping(string => mappin ...
- 在Linux中监视IO性能
dd命令 iostat命令 理解iostat的各项输出 iostat的应用实例 附:在Windows中监视IO性能 延伸阅读 dd命令 dd其实是工作于比较低层的一个数据拷贝和转换的*nix平台的工具 ...
- 登录xdebug
1.配置 2.先不打断点,调至登录页面 3.在登录必经过处打断点,访问页面输入账号密码点击登录,进入代码追踪模式
- 2.8.2 并发下的ArrayList,以及源码分析
package 第二章.并发下的ArrayList; import java.util.ArrayList;import java.util.List; /** * Created by zzq on ...
- 设计模式04: Factory Methord 工厂方法模式(创建型模式)
Factory Methord 工厂方法模式(创建型模式) 从耦合关系谈起耦合关系直接决定着软件面对变化时的行为 -模块与模块之间的紧耦合使得软件面对变化时,相关的模块都要随之变更 -模块与模块之间的 ...
- 【Android学习】Android工程资源命名禁忌
在制作一个继续按钮时,将button的id设置为continue,发现报了错误,error: invalid symbol: 'continue' 一开始还以为是编码问题,后来百度之后才知道安卓And ...
- POJ1062 昂贵的聘礼(带限制的spfa)
Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低 ...
- smartUpload上传下载
上传 file_upload_smart_form.jsp文件代码 <%@ page contentType="text/html;charset=gb2312" langu ...