• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C#一些实用的,容易被遗忘的特性,经验和技巧

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

  突然想到,想要通过名字来获得枚举的值,看了不少的资料,发现上面都只是解释枚举的语法而已,对于它的实际应用,一点也不提及,难道只能用switch来判断?不好吧,这样也未免太土了点。后来发现了枚举还有这样的用法,真的很使用,看代码:

 

)obj);
}
}
}

 

再来看一下运行结果图:

  怎么样,是不是觉得很实用啊。

 

  接下来要介绍的是委托(delegate),有对delegate不太了解的人可以看一下我以前写的一个随笔什么是委托(delegate) 。我们平时使用委托都是单个的指定委托的方法,但是如果我们需要通过参数动态的指定呢?难道也是用switch?这样做太麻烦了,还有更好的方法,看代码:

 

 dele;
d.Invoke();
}
}
}

 

下面是运行的结果图:

 

  接下来是一个C#经常被忽略的特性,匿名方法。虽然匿名方法很少用到,但是知道总比不知道的好。以delegate为例,我们平时都是赋予delegate具体的方法,但是有时候有一个方法要委托,但是它要执行的功能实在是很简单,而且可能也就只用一次而已,但是要给它写一个具体的方法实在是麻烦。而C#2.0为我们提供了匿名方法的特性,代码如下:

 

); };
d.Invoke();
}
}
}

 

运行结果如下图:

 

  接下来是索引器(Indexer)了,写技术文章不像写小说,真的挺累的。要构思,要描述,要写代码,要调试,更重要的是,要敲键盘。好了,抱怨到些为止。索引器(Indexer)能让我们像访问数组一样访问对象,至于它有什么作用呢?只有用到了才知道,看代码:

 

)
{
Console.WriteLine(names[i]);
}
}
}
}

 

  遗憾的是,它不支持foreach送代。要实现送代的功能,可以实现IEnumerable接口。

 

  接下来是。。。?还有接下来?是不是看得很累了,其实我也写得很累了。接下来是哈希表(HashTable),HashTable大家都知道很好用,大家可能会发现,它好像不能使用foreach来送代。其实它是可以送代的,只是稍微有点不同而已,看代码:

 

 name.Value);
}
}
}
}

 

运行结果如下图:

  大家仔细看一下,它送代返回的类型是DictionaryEntry而不是我们预料中的string。为什么是这样的呢?HashTable不同于其它的Collection,它保存的不仅是值(value),同时还保存着键(key),它们在HashTable中是以DictionaryEntry类型保存着的。再回顾一下上面的索引器(Indexer),我们就能推断出,HashTable可能是一个实现了索引器功能的类(不是别骂我,我也是猜的)。

  好了,终于写完了,希望对大家有所帮助。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
.NET/C# 中关于属性(Property)的两个小知识点发布时间:2022-07-10
下一篇:
C#HttpGet提交请求发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap