首先我们要知道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#入门中的必备语法(一)的更多相关文章

  1. 011 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 05 变量的三个元素的详细介绍之三—— 变量值——即Java中的“字面值”

    011 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 05 变量的三个元素的详细介绍之三-- 变量值--即Java中的"字面值" 变量值可以是 ...

  2. 010 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 04 变量的三个元素的详细介绍之二——变量类型——即Java中的数据类型

    010 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 04 变量的三个元素的详细介绍之二--变量类型--即Java中的数据类型 Java中变量的三要素 变量名 变 ...

  3. 008 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 02 Java 中的关键字

    008 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 02 Java 中的关键字 关键字 关键字就是一些有特殊意义的词 之前学习的程序中涉及到的关键字 Java中 ...

  4. 075 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 07 综合案例-数组移位-主方法功能4的实现

    075 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 07 综合案例-数组移位-主方法功能4的实现 本文知识点:综合案例-数组移位-主方法功能4的实现 说明:因为 ...

  5. 074 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 06 综合案例-数组移位-主方法功能3的实现

    074 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 06 综合案例-数组移位-主方法功能3的实现 本文知识点:综合案例-数组移位-主方法功能3的实现 说明:因为 ...

  6. 073 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 05 综合案例-数组移位-主方法功能1和2的实现

    073 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 05 综合案例-数组移位-主方法功能1和2的实现 本文知识点:综合案例-数组移位-主方法功能1和2的实现 说 ...

  7. 072 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 04 综合案例-数组移位-在指定位置处插入数据方法

    072 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 04 综合案例-数组移位-在指定位置处插入数据方法 本文知识点:综合案例-数组移位-在指定位置处插入数据方法 ...

  8. 071 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 03 综合案例-数组移位-显示数组当中所有元素的的方法

    071 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 03 综合案例-数组移位-显示数组当中所有元素的的方法 本文知识点:综合案例-数组移位-显示数组当中所有元素 ...

  9. 070 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 02 综合案例-数组移位-从键盘接收数据

    070 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 02 综合案例-数组移位-从键盘接收数据 本文知识点:综合案例-数组移位-从键盘接收数据 说明:因为时间紧张 ...

随机推荐

  1. Transition 1

    W3C标准中对css3的transition这是样描述的:“css的transition允许css的属性值在一定的时间区间内平滑地过渡.这种效果可以在鼠标单击.获得焦点.被点击或对元素任何改变中触发, ...

  2. Adnroid Studio使用技巧

    官方第一条提示:所有的使用技巧都可以通过Help→Tips of the Day查看. 下面摘抄一些比较有用的技巧: 1.Esc把活动窗口从工具窗口指向编辑窗口.F12把编辑窗口指向上一次活动的工具窗 ...

  3. c#修改本地连接工具 ip地址,dns,网关,子网掩码

    //Form1类后台     #region 加载配置文件中的信息        /// <summary>        /// 加载配置文件中的信息        /// </s ...

  4. ubuntu 16.04 下载源

    修改适当的更新源 可以使得aptget安装的速度变得快很多 ubuntu的更新源在 /etc/apt/sources.list 修改更新源 sudo vi /etc/apt/sources.list ...

  5. html5页面增强元素

    figure元素以及figcaption元素 <figure> <img src="images/1.jpg" alt="图片"> &l ...

  6. windows下配置Nginx+Mysql+Php7

    环境:Windows10 mysql-5.6.24-win32解压缩版    nginx-1.8.0    php7 1.Mysql安装 下载压缩文件之后解压缩至相应目录(我的目录是G:\wnmp\m ...

  7. php word转HTML

    因为安装的的xampp不知道如何查看我的Apache版本是多少,就先把com.allow_dcom=true打开了,但是仍旧报错说找不到com类,然后就把下面的extension扩展添加到php.in ...

  8. 利用ICommand和ITool重写Arcengine中控件的事件

    Arcengine窗体开发中,不同命令或者工具可能会触发同一控件的同一事件,这样会造成该事件中代码的混乱.以主窗体的AxMapcontrol控件为例,当开始画图时因为有很多种类型的Feature,所以 ...

  9. 关于HTML5 语音搜索的问题

    以前语音输入功能虽然没用过,但是看上去很高级的样子,有了智能手机之后,在ios和android中的语音输入,特别是iPhone的Siri,让一切变得如此简单,嘎嘎. 当然我不是在这里要实现如此强悍的功 ...

  10. UESTC_Sliding Window 2015 UESTC Training for Data Structures<Problem K>

    K - Sliding Window Time Limit: 18000/6000MS (Java/Others)     Memory Limit: 131072/131072KB (Java/Ot ...