• 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中就可以执行隐式转换。

    1              char str = 'a';
    2              ushort newStr;
    3              newStr = str;
    4              Console.WriteLine("str {0}", str);
    5              Console.WriteLine("newStr {0}", newStr);
    隐式转换

    输出结果:str  a

                  newStr 97

    此时编译器自动执行了隐式转换。ushort和char类型的取值范围都在0~65535之间,所以可以执行类型转换。

    显式转换:微软在程序中为我们提供了显示转换相关的方法(Convert)。但要注意溢出问题,如果实际需要转换的A类型值超过了B类型的取值范围就会发生溢出,但系统默认不会报错,但是会造成数据丢失。可以通过chack方法进行检查。

                short str = 285;
                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=0;
         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 = 20;
        }
    
        static void Main()
        {
            int val = 0;
            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=10; //如果没有这个赋值,将会报错的
                i = i + 1;
            }
    ref和out不同
  • 相关阅读:
    网络世界中的图片以及相关的处理
    Ninject 2.x细说1.基本使用
    Orchard1.4新功能自动路由(AutoRouter)并附Orchard最新1.4版汉化包
    json的一点总结
    ASP.NET MVC路由扩展:路由映射
    厚积薄发,丰富的公用类库积累,助你高效进行系统开发(12) 网络相关操作辅助类
    IIS是如何处理ASP.NET请求的
    一周最新示例代码回顾 (3/19–3/25)
    .NET插件系统(三) 插件间通信问题——设计可自组织和注入的组装程序
    缓存总结
  • 原文地址:https://www.cnblogs.com/zheermao/p/5278616.html
Copyright © 2020-2023  润新知