我是做Java的,最近研究C#,很多函数不知道干什么的,弱弱的问下C#有没有API,如果没有我如何像java一样查看API就能知道函数、方法的用途
解决方案 »
- 怪哉,“Dictionary”明明存在此“关键字”的啊,为什么提示找不到???
- directshow 的程序中怎样删除一个graph 再重建一个新图
- COM与TCP,TCP与COM通讯问题[急]
- C# 怎么取得某个名称的抽口句柄 再在此窗口取色?
- 键盘事件问题(急)
- 中文繁体字转换成简体字的问题!
- 紧急求助:WIN32与.NET应用调试
- 有没有人知道DevExpress中的控件GridControl中有没有类似于DataGrid的属性CurrenRowIndex的属性呀?
- 怎样让控制台背景色与前景色(文字)不断的闪烁?
- 有哪位大佬帮我看一下我的VS2017出什么问题了
- 急 急 急 生成 错误 ResGen.exe已退出 代码为 -1073741502
- 用户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联
[DllImport...]引用进来
不过大部分都封装好了
看你如何理解了。既然是接口,就没人说一定需要是function/method。win32 api可以通过p/invoke方式访问,如果你说的是框架,那.net runtime class就算是api了。看msdn,了解.net的架构,功能划分。
马上等你
csdn
床上等你
// 表示键/值对的集合,这些键/值对根据键的哈希代码进行组织。
[Serializable]
[DebuggerTypeProxy(typeof(Hashtable.HashtableDebugView))]
[DebuggerDisplay("Count = {Count}")]
[ComVisible(true)]
public class Hashtable : IDictionary, ICollection, IEnumerable, ISerializable, IDeserializationCallback, ICloneable
{
这是java关于Hashtable的注释
java.util
类 Hashtable<K,V>
java.lang.Object
java.util.Dictionary<K,V>
java.util.Hashtable<K,V>
所有已实现的接口:
Serializable, Cloneable, Map<K,V>
直接已知子类:
Properties, UIDefaults --------------------------------------------------------------------------------public class Hashtable<K,V>extends Dictionary<K,V>implements Map<K,V>, Cloneable, Serializable此类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null 对象都可以用作键或值。为了成功地在哈希表中存储和获取对象,用作键的对象必须实现 hashCode 方法和 equals 方法。Hashtable 的实例有两个参数影响其性能:初始容量 和加载因子。容量 是哈希表中桶 的数量,初始容量 就是哈希表创建时的容量。注意,哈希表的状态为 open:在发生“哈希冲突”的情况下,单个桶会存储多个条目,这些条目必须按顺序搜索。加载因子 是对哈希表在其容量自动增加之前可以达到多满的一个尺度。初始容量和加载因子这两个参数只是对该实现的提示。关于何时以及是否调用 rehash 方法的具体细节则依赖于该实现。通常,默认加载因子(.75)在时间和空间成本上寻求一种折衷。加载因子过高虽然减少了空间开销,但同时也增加了查找某个条目的时间(在大多数 Hashtable 操作中,包括 get 和 put 操作,都反映了这一点)。初始容量主要控制空间消耗与执行 rehash 操作所需要的时间损耗之间的平衡。如果初始容量大于 Hashtable 所包含的最大条目数除以加载因子,则永远 不会发生 rehash 操作。但是,将初始容量设置太高可能会浪费空间。如果很多条目要存储在一个 Hashtable 中,那么与根据需要执行自动 rehashing 操作来增大表的容量的做法相比,使用足够大的初始容量创建哈希表或许可以更有效地插入条目。下面这个示例创建了一个数字的哈希表。它将数字的名称用作键: Hashtable<String, Integer> numbers
= new Hashtable<String, Integer>();
numbers.put("one", 1);
numbers.put("two", 2);
numbers.put("three", 3);要获取一个数字,可以使用以下代码: Integer n = numbers.get("two");
if (n != null) {
System.out.println("two = " + n);
}
}由所有类的“collection 视图方法”返回的 collection 的 iterator 方法返回的迭代器都是快速失败 的:在创建 Iterator 之后,如果从结构上对 Hashtable 进行修改,除非通过 Iterator 自身的 remove 方法,否则在任何时间以任何方式对其进行修改,Iterator 都将抛出ConcurrentModificationException。因此,面对并发的修改,Iterator 很快就会完全失败,而不冒在将来某个不确定的时间发生任意不确定行为的风险。由 Hashtable 的键和元素方法返回的 Enumeration 不 是快速失败的。 注意,迭代器的快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出任何硬性保证。快速失败迭代器会尽最大努力抛出 ConcurrentModificationException。因此,为提高这类迭代器的正确性而编写一个依赖于此异常的程序是错误做法:迭代器的快速失败行为应该仅用于检测程序错误。 从Java 2 平台 v1.2起,此类就被改进以实现 Map 接口,使它成为 Java Collections Framework 中的一个成员。不像新的 collection 实现,Hashtable 是同步的 从以下版本开始:
JDK1.0
另请参见:
Object.equals(java.lang.Object), Object.hashCode(), rehash(), Collection, Map, HashMap, TreeMap, 序列化表格你会喜欢哪一个?
// 摘要:
// Represents a strongly typed list of objects that can be accessed by index.
// Provides methods to search, sort, and manipulate lists.
//
// 类型参数:
// T:
// The type of elements in the list.
[Serializable]
[DebuggerDisplay("Count = {Count}")]
public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable
{
// 摘要:
// Initializes a new instance of the System.Collections.Generic.List<T> class
// that is empty and has the default initial capacity.
public List();
//
// 摘要:
// Initializes a new instance of the System.Collections.Generic.List<T> class
// that contains elements copied from the specified collection and has sufficient
// capacity to accommodate the number of elements copied.
//
// 参数:
// collection:
// The collection whose elements are copied to the new list.
//
// 异常:
// System.ArgumentNullException:
// collection is null.
public List(IEnumerable<T> collection);我咋看到的都挺多的
答案是肯定的,有!而且还是你java 能查到的哪些API,当然后续会有些心加入的。关键是如何使用!1、P/Invoke平台调用,就是通常所说的互操作
以C++为例:
原型:DWORD GetFileAttributes( LPCTSTR lpFileName ); //获取文件属性值
C#声明:
[DllImport(kerner32.dll)]
public static extern uint GetFileAttributes(string lpFileName );2、直接使用NET内库中已有的API
毕竟互操作比较麻烦,而且容易出错,涉及到函数声明、常量定义、错误处理、回调函数、数据封送、效率、性能。等很多环节,现在,NET内库中已有常用的直接可以使用的Win32 API函数。由于Win32 API函数规模实在过于庞大,微软采取折中,先把最常用的做了。
所有,我们在使用Win32 API函数是,先到net内库中查找,以确定是否有对应的实现。
例如:FileSystem.CopyFile (String, String, Boolean) 在MSDN网站上,有一篇名为:“Micrsoft Win32 to Microsfot .NET FrameWork API Map”的文档,此文档列出了net已经实现的、与Win32 API具有相同功能的方法,避免不必要互操作。
http://msdn.microsoft.com/zh-cn/library/gg145045(v=vs.100).aspx