漫谈C#之关键字(1)

原创 2007年09月20日 17:18:00
    每一种语言都有非常多的关键字,而且这些关键字也都大同小异,不过毕竟还是有些许的不一样。有些关键字大家碰到的多了,自然就熟悉了,但是有些关键字用得 不大多,或者是新引入的,所以就不大熟悉了。我平常在用的时候,就是会碰到一些关键字,感觉有点生疏,平常也会把这些我不懂的关键字的用法了解一下并记录 下来。想到应该也有很多跟我同样的人,所以就把我的记录跟大家分享一下。请各位tx多多指正!

访问关键字   
    base:用于派生类中访问基类的成员
  • 调用基类上已被其他方法重写的方法
    1 public override void GetInfo()
    2 {
    3     base.GetInfo(); // 调用基类上的GetInfo方法
    4 }
  • 指定创建派生类实例时应用的基类构造函数
    1 public MyDerived() : base() // 调用基类的构造函数
    2 {}
    从静态方法中使用base关键字是错误的。

转换关键字
   
explicit:用于声明用户定义的显式类型转换运算符
1 class MyType
2 {
3     public static explicit operator MyType(int i)
4     {
5         // 从int转换到MyType类型的代码
6     }
7 }
    显式转换运算符必须通过类型转换调用
1 int i;
2 MyType x = (MyType)i; // int到MyType类型的转换需要进行类型转换
    如果转换操作可能导致异常或信息丢失,则应用explicit关键字标记它。

    implicit:用于声明用户定义的隐式转换运算符 
1 class MyType
2 {
3     public static implicit operator int(MyType m)
4     {
5         // 从MyType转换到int类型的代码
6     }
7 }

1 MyType x;
2 int i = x;  // 隐式地调用MyType的MyType到int类型的转换运算符
    隐式转换可以通过消除不必要的类型转换来提高源代码的可读性。
    一般情况下,调用某一个隐式转换时,应当绝不会引发异常,并且不会造成信息丢失。否则,应将其标记为explicit。

方法参数关键字
    如果声明方法的参数时没有指明ref或out,该参数将具有与该方法相关的值。这个值在方法中能被更改,但是当程序返回到调用过程时,这种改动不会被保留。

    params:用于指定在参数数目可变时带有参数的方法参数
    在方法声明中的params关键字之后不允许引入任何其他参数,但在其前面可以有其他参数。而且在方法声明中只允许使用一个params关键字。
 1 public static void UseParams(params int[] list)
 2 {
 3     for(int i = 0; i < list.Length; i++)
 4     {
 5         Console.WriteLine(list[i]);
 6     }
 7 }
 8 
 9 public static void Main()
10 {
11     UseParams(1,2,3);
12     int[] myArray = new int[3] { 10,11,12 };
13     UseParams(myArray);
14 }
    ref、out  使方法可以引用传递到该方法的那一个变量,当程序转至调用方法时,在方法中对参数所做的任何改动都将传给该变量。
    ref参数的值将被传递到ref参数,故必须首先初始化;而out参数不然,它的值不会被传递到该out参数,故不必首先初始化,但它必须在方法返回以前为out参数赋值。
    属性不是变量,不能作为ref/out参数。 

C#关键字详解(一)

为了更好的理解和学习C#,本人就其中至关重要的关键字做简单整理: 概念: 就关键字的概念,我想MSDN的解释已经足以使大多数人明白。关键字,是对编译器有特殊意义的预定义保留标示符,它们不能在程序中用作...
  • u011593927
  • u011593927
  • 2013年10月02日 20:22
  • 2176

C# in关键字你造吗

上下文in关键字大致有三种 第一:在foreach中使用 用于遍历数组或集合foreach 语句对实现 System.Collections.IEnumerable 或 System.Co...
  • w200221626
  • w200221626
  • 2016年08月30日 17:21
  • 2623

C#中Internal关键字的总结

注意:想要彻底把Internal关键字搞清楚,就耐着性子把她读完。当然了这篇文章只是对其他文章的总结。也算是引用吧。主要还是为了把知识点搞清楚 进入主题之前先来了解一下,项目、解决方案、程序集、命...
  • baidu_32134295
  • baidu_32134295
  • 2016年04月30日 10:21
  • 6235

C#学习笔记2:C#中修饰类相关的关键字

修饰符用于限定类型以及类型成员的申明,C#中的修饰符按功能可分为四部分:属性修饰符,存取修饰符,类修饰符和成员修饰符。 属性修饰符: [Serializable]:按值将对象封送到远程服务器。在...
  • lzg13541043726
  • lzg13541043726
  • 2015年05月08日 09:23
  • 749

c#中的关键字out是什么意思?ref是什么意思?它们有什么区别?

不知大家有没有遇到过需要一个函数返回多个值的情况。 当写代码要返回多个值的时候,当然可以返回一个数组来实现,但如果遇到需要返回的多个值的类型不同呢?这个时候怎么办? c#中,out关键字和ref关...
  • sinat_23079759
  • sinat_23079759
  • 2016年10月22日 22:14
  • 2036

C#中的is,as关键字

1.如:BaseItem item=sender as BaseItem;        as指将sender显示转换BaseItem类型          相当于:        BaseIt...
  • lwj0310
  • lwj0310
  • 2014年07月08日 08:43
  • 587

C#关键字快速过滤方法

本篇博客讲的方案,思路很简单,还是基于撒列,把每个关键词的第一个字作为key,把关键词作为value,把所有关键词撒列在一个Dictionary中,由于一个关键字可能对应多个关键词,所以value其实...
  • juelingfeng
  • juelingfeng
  • 2014年08月07日 13:24
  • 1914

C#中的override和new关键字

问题1: 虚方法首先,看下面的代码。namespace CSharpTest { class A { public void fun() { ...
  • T_27080901
  • T_27080901
  • 2015年05月16日 21:01
  • 1890

c# 深度解析方法参数的关键字ref

昨天在垒代码的时候遇到了一个基础没打牢就会暴露的问题。传递给方法的参数为类(class)时,在方法中所做的修改赋值不一定会最终改变到原始的变量上。 举一个例子,如果一个方法Action(List...
  • CNHK1225
  • CNHK1225
  • 2016年11月08日 18:02
  • 343

C#实现文本关键词过滤

思路来自编译原理,当然跟编译原理的算法相比还错的很多, 上代码: /// /// 关键词标识方法 /// /// 待处理文本 //...
  • Wolftotem18
  • Wolftotem18
  • 2016年08月08日 14:13
  • 937
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:漫谈C#之关键字(1)
举报原因:
原因补充:

(最多只允许输入30个字)