C#入门中的必备语法(一)
首先我们要知道C#语言是一种面向对象的语言由C和C++演变而来,它依赖于.NET Framework。.NET Framework可以提供一个强大的代码库供其调用。之所以说C#语言依赖于.NET Framework是由于C#源代码只有经过编译器(指VS或VCE)的编译之后,变成CIL(Common Intermediate Language)通用中间语言。其实通常是我们常见的.exe或者.dll文件也叫作程序集。当我们运行.exe文件时,程序集将被CLR—公共语言运行时(Common Language Runtime)翻译为CPU的指令然后交由CPU完成。所以我们用C#只能编写托管环境下的代码(要受CLR控制)。学过JAVA的人可以把CLR理解为JAVA虚拟机,主要负责管理内存、处理安全性、垃圾回收、以及跨语言调试等。
学习一门编程语言我们还要了解它的基本语法:关于语法大家只要有一本系统介绍C#语言的书大致都差不多。
1、关于显示转换和隐式转换
隐式转换:类型A到B在所有情况下都可以进行,编译器自主进行转换。那么什么时候执行隐式转换呢?-只要类型A的取值范围完全包含在取值B中就可以执行隐式转换。
char str = 'a';
ushort newStr;
newStr = str;
Console.WriteLine("str {0}", str);
Console.WriteLine("newStr {0}", newStr);
隐式转换
输出结果:str a
newStr 97
此时编译器自动执行了隐式转换。ushort和char类型的取值范围都在0~65535之间,所以可以执行类型转换。
显式转换:微软在程序中为我们提供了显示转换相关的方法(Convert)。但要注意溢出问题,如果实际需要转换的A类型值超过了B类型的取值范围就会发生溢出,但系统默认不会报错,但是会造成数据丢失。可以通过chack方法进行检查。
short str = ;
byte newStr;
newStr =Convert.ToByte(str);
Console.WriteLine("str {0}", str);
Console.WriteLine("newStr {0}", newStr);
显式转换
会报: 值对于无符号的字节太大或太小。
2 函数中的参数问题
首先注意函数调用时实参和形参要类型匹配。
c#允许指定一个(也只能是一个)特定的参数,必须是参数的最后一个用params修饰,称为参数数组。
static int sumVals(params int[] vals)
{
int sum=;
foreach(int val in vals)
{
sum+=val;
}
return sum;
}
求和函数
引用参数 ref 和 out
ref的特点是有进有出,即在传递参数之前就已经对它进行赋值,在传入方法体时,是将该数的地址传了进来,如果对其进行相应的赋值操作,直接改的是地址里的值,所以,当该方法执行完,该数的值也就跟着改变了。而out与ref的唯一区别是,在方法接收参数后,对它进行初始化(如果没有初始化,将会报错的),其余的用法都和ref一样。
ref 关键字使参数按引用传递,当执行调用方法时,在方法中对参数的任何更改都将反映在该变量中。学过C++可以类比引用。
class Ref
{
static void refExample(ref int i)
{
i = ;
} static void Main()
{
int val = ;
refExample(ref val);
Console.WriteLine(val);//此时打印出20
}
}
引用参数
static void Main(string[] args)
{
int i ;
Add( out i);
Console.WriteLine(i);//结果输出11
}
static void Add(out int i)
{
i=; //如果没有这个赋值,将会报错的
i = i + ;
}
ref和out不同
C#入门中的必备语法(一)的更多相关文章
- 011 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 05 变量的三个元素的详细介绍之三—— 变量值——即Java中的“字面值”
011 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 05 变量的三个元素的详细介绍之三-- 变量值--即Java中的"字面值" 变量值可以是 ...
- 010 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 04 变量的三个元素的详细介绍之二——变量类型——即Java中的数据类型
010 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 04 变量的三个元素的详细介绍之二--变量类型--即Java中的数据类型 Java中变量的三要素 变量名 变 ...
- 008 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 02 Java 中的关键字
008 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 02 Java 中的关键字 关键字 关键字就是一些有特殊意义的词 之前学习的程序中涉及到的关键字 Java中 ...
- 075 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 07 综合案例-数组移位-主方法功能4的实现
075 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 07 综合案例-数组移位-主方法功能4的实现 本文知识点:综合案例-数组移位-主方法功能4的实现 说明:因为 ...
- 074 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 06 综合案例-数组移位-主方法功能3的实现
074 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 06 综合案例-数组移位-主方法功能3的实现 本文知识点:综合案例-数组移位-主方法功能3的实现 说明:因为 ...
- 073 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 05 综合案例-数组移位-主方法功能1和2的实现
073 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 05 综合案例-数组移位-主方法功能1和2的实现 本文知识点:综合案例-数组移位-主方法功能1和2的实现 说 ...
- 072 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 04 综合案例-数组移位-在指定位置处插入数据方法
072 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 04 综合案例-数组移位-在指定位置处插入数据方法 本文知识点:综合案例-数组移位-在指定位置处插入数据方法 ...
- 071 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 03 综合案例-数组移位-显示数组当中所有元素的的方法
071 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 03 综合案例-数组移位-显示数组当中所有元素的的方法 本文知识点:综合案例-数组移位-显示数组当中所有元素 ...
- 070 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 02 综合案例-数组移位-从键盘接收数据
070 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 02 综合案例-数组移位-从键盘接收数据 本文知识点:综合案例-数组移位-从键盘接收数据 说明:因为时间紧张 ...
随机推荐
- ubuntu 16.04 下载源
修改适当的更新源 可以使得aptget安装的速度变得快很多 ubuntu的更新源在 /etc/apt/sources.list 修改更新源 sudo vi /etc/apt/sources.list ...
- (转+原)ipp "No dlls were found in the Waterfall procedure"
转自: http://blog.csdn.net/hua_007/article/details/9112909 1,吧 dll的目录放到系统环境变量中 intel 的官方推荐.验证是ok的. --- ...
- [C++程序设计]内置函数
注意: 可以在声明函数和定义函数时同时写 inline,也可以只在其中一处声明inline,效果相同,都能按内置函数处理. 使用内置函数可以节省运行时间,但却增加了目标 程序的长度.因此一般只将规模很 ...
- 黑马程序员 1、C语言32个关键字整理分类
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------ C语言一共有32个关键字 一.数据类型关键字(共20个) A.基本数据类型(5个)void :声明 ...
- setPixel抛出java.lang.IllegalStateException
原来,从ImageView里读取的Bitmap,或者加载drawable里的图片资源,返回的都是一个immutalbe的bitmap,所以不能用setpixels 必须采取类似Bitmap bmp = ...
- FileMode枚举
FileMode枚举是一个简单枚举,用于指定操作系统打开文件的方式. 枚举成员 成员值 描述 CreateNew 1 指定操作系统应创建新文件,如果文件存在则引发异常. Create 2 指定操作系统 ...
- zhihu spark集群,书籍,论文
spark集群中的节点可以只处理自身独立数据库里的数据,然后汇总吗? 修改 我将spark搭建在两台机器上,其中一台既是master又是slave,另一台是slave,两台机器上均装有独立的mongo ...
- 清除NT Kernel & System占用80端口
运行'netstat -ano'发现80端口被system占用,进程号'4'转到任务管理器上看pid对应的进程描述是NT kernel & system. 解决方法: 1.1运行'regedi ...
- UESTC_邱老师选妹子 2015 UESTC Training for Dynamic Programming<Problem H>
H - 邱老师选妹子 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submi ...
- App 推荐:Spotify
之前一直用网易云音乐听歌,后来因为沸沸扬扬的 XCode 注入病毒事件,就把它卸了(无奈脸=.=) 对比国内其它音乐App,私心觉得网易云音乐还是不错的.没有很多花里胡哨的装饰,里面的歌单做的也还算精 ...