ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3578|回复: 7

.net常用类库

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-11-26 10:18 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 HHAAMM 于 2012-11-26 10:59 编辑

(转)
类库是我们学习和开发的基本。
以下主要涉及是的system命名空间的常用
基本的Object和Type类,它构成了.NET FrameWork功能的基础。
多用途的类。如Array、Console和String,它们被用于许多不同类型的应用程序。
重要的基类,如EventArgs、Exception和MarshalByRefObject。这些类定义了很多派生类通用的属性可方法。
Math类,他是一个只包含的数学函数和常量的库。
Convert类,它提供了转换函数。
一般来通用的都会定义为静态的类。这样方面全句调用。

Type类
     Type它表示类型声明:类类型、接口类型、数组类型、值类型、枚举类型、类型参数、泛型类型定义,以及开放或封闭构造的泛型类型。
一个只包含的数学函数和常量的库。
可以过通过两种方法来获得一个Type对象,一种使用GetType()方法,或是使用typeOf运算符。 下面语句都将提供一个代表String类的Type对象

Type type1 = Type.GetType("System.String");
Type type2=typeof(string);

  1. Imports System
  2. Imports System.Reflection
  3. Module Module1
  4.     Sub Main()
  5.         Dim t As Type = GetType(String)
  6.         Dim substr As MethodInfo = t.GetMethod("Substring", New Type() {GetType(Integer), GetType(Integer)})
  7.         Dim result As Object = substr.Invoke("Hello, World!", New Object() {7, 5})
  8.         Console.WriteLine("{0} returned ""{1}"".", substr, result)
  9.         Console.ReadKey()
  10.     End Sub
  11. End Module
复制代码



该贴已经同步到 HHAAMM的微博

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-26 10:21 | 显示全部楼层
Object类
   是.NET FrameWork中所有类的最终父类,它为所有其它的类提供了通用的方法。
   因为其它所有的类都要由Object派生而来,所以对Object的继承就不用再随声明。  
   在C#语言提供了关键字object,它可以作为Object类的实类的一个别名。可以在任何需要Object的表达式中使用它
主要的方法
     Equals()确定两个 Object 实例是否相等。
    Finalize() 允许 Object 在“垃圾回收”回收 Object 之前尝试释放资源并执行其他清理操作。
    GetHashCode() 用作特定类型的哈希函数。
    GetType() 获取当前实例的 Type。
    ReferenceEquals() 确定指定的 Object 实例是否是相同的实例。
    ToString() 返回表示当前 Object 的 String。

String类
    是一个非常重要,也非常特别的类。
     在.NET中String是不可改变对象,它封装了一串不能改变的字符。一旦创建了一个String对象并为它赋值,它就不可能再改变
   这里大家可以参考:博客园 李会军的一篇 你真的了解.NET中的String吗?
Array类
它类是公共语言运行时中所以数组的父类。是一个抽象的基类
它定义了对数组创建、查找、排序可修改操作的方法。
Console类
    它为控制台应用程序提供了访问标准的输入输出和错误流的方法和属性。
以下是一个控制台应用程序
  1. class Program    {       static void Main(string[] args)        {            System.Console.WriteLine("hell World");        }    }
复制代码
控制台应用程序也可以有返回值。 按照惯例,返回值为O表示程序正常结束,其它值(如-1)则表示有错误发生。
  1. class Program    {        static int Main(string[] args)        {            int value = 0;            if (args[0] == "a")                value = 1;            else if (args[0] == "b")                value =2;            return value;                                }    }
复制代码

得到控制台的值
  1. try        {            Process pro = new Process();            //不显示窗口            pro.StartInfo.CreateNoWindow = true ;            pro.StartInfo.UseShellExecute = false;            //要调用的控制台程序            pro.StartInfo.FileName=@"C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\ConsoleApplication1\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe";            //给控制台程序的参数传递值            pro.StartInfo.Arguments = this.txtValue.Text.Trim();            pro.Start();            //调用控制台程序的返回值            int i = pro.ExitCode;                        Response.Write(i.ToString());        }        catch (Exception ex)        {            Response.Write(ex.Message);        }
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-26 10:22 | 显示全部楼层
Environment类

    提供有关当前环境和平台的信息以及操作它们的方法。无法继承此类。

  方法  

      Exit()  终止此进程并为基础操作系统提供指定的退出代码。
     GetCommandLineArgs()  返回包含当前进程的命令行参数的字符串数组。

比较重要的属性

ommandLine  获取该进程的命令行。

   CurrentDirectory  获取或设置当前工作目录的完全限定路径。

   ExitCode  获取或设置进程的退出代码。

   HasShutdownStarted  获取一个值,该值指示是否公共语言运行库正在关闭或者当前的应用程序域正在卸载。

   MachineName  获取此本地计算机的 NetBIOS 名称。

     NewLine  获取为此环境定义的换行字符串。

     OSVersion  获取包含当前平台标识符和版本号的 OperatingSystem 对象。

    ProcessorCount  获取当前计算机上的处理器数。

   StackTrace  获取当前的堆栈跟踪信息。

   SystemDirectory  获取系统目录的完全限定路径。

     TickCount  获取系统启动后经过的毫秒数。

   UserDomainName  获取与当前用户关联的网络域名。

   UserInteractive  获取一个值,用以指示当前进程是否在用户交互模式中运行。

   UserName  获取当前已登录到 Windows 操作系统的人员的用户名。

     Version  获取一个 Version 对象,该对象描述公共语言运行库的主版本、次版本、内部版本和修订号。

   WorkingSet  获取映射到进程上下文的物理内存量。

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-26 10:26 | 显示全部楼层
GC类
        它可以通过编程使用一个静态的成员集合与垃圾回收器进行交互。 一般只有使用那托管代码是才需要用到System.GC类
     垃圾回收由以下步骤组成:
        1.  垃圾回收器搜索托管代码中引用的托管对象。
        2.  垃圾回收器尝试完成没有被引用的对象。
        3.  垃圾回收器释放没有被引用的对象并回收它们的内存。
Guid类
   表示全局唯一标识符 (GUID)。 这个类园子里讨论比较火热。
   大家可以看看以下面几篇文章
          关于GUID         使用Guid做主键和int做主键性能比较

ICloneable 接口
   支持克隆,即用与现有实例相同的值创建类的新实例。

柚子实现接口:?
public class userinfo : System.ICloneable
    {
        public userinfo(string userName, string password)
        {
            this.UserName = userName;
            this.Password = password;
        }
        public string UserName { get; set; }
        public string Password { get; set; }

        public override string ToString()
        {
            return string.Format("姓名:{0} 密码:{1}", this.UserName, this.Password);
        }
        public object Clone()
        {
            userinfo userinfo = new userinfo(this.UserName, this.Password);
            return userinfo;
        }




调用接口
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Program
   {
       static void Main(string[] args)
       {
           userinfo us1 = new userinfo("小武", "123456789");
           userinfo us2 = us1;
           userinfo us3 = us1.Clone() as userinfo;

           us2.UserName = "小武的相等";
           us3.UserName = "小武的克隆";

           Console.WriteLine(us1.ToString());
           Console.WriteLine(us2.ToString());
           Console.WriteLine(us3.ToString());

           Console.Read();
        
       }
   }





Idisposable接口
      定义一种释放分配的资源的方法。
         1、 Finalize只释放非托管资源;
         2、 Dispose释放托管和非托管资源;
        3、 重复调用Finalize和Dispose是没有问题的;
        4、  GC.Collect();   强制对所有代进行即时垃圾回收。
        5、 Finalize和Dispose共享相同的资源释放策略,因此他们之间也是没有冲突的。
MSDN中关于这个接口的说明:
[ComVisible(true)]public interface IDisposable{    // Methods    void Dispose();}1.[ComVisible(true)]:指示该托管类型对 COM 是可见的.代码
//1.下面代码对Dispose方法做了封装,说明如何在使用托管和本机资源的类中实现 Dispose(bool) 的常规示例:
public class BaseResource : IDisposable
    {
        
// 非托管资源
        private IntPtr handle;
        
//托管资源
        private Component Components;
        
// Dispose是否被调用
        private bool disposed = false;

        
public BaseResource()
        {            
        }
      
        
public void Dispose()
        {
            Dispose(
true);            
            GC.SuppressFinalize(
this);
        }

        
protected virtual void Dispose(bool disposing)
        {
           
            
if (!this.disposed)         
            {               
               
if (disposing)
                {
                    
// 释放托管资源
                    Components.Dispose();
                }
               
// 释放非托管资源,如果disposing为false,
               
// 只有托管资源被释放
                CloseHandle(handle);
                handle
= IntPtr.Zero;
               
// 注意这里不是线程安全的
            }
            disposed
= true;
        }

        
// 析构函数只会在我们没有直接调用Dispose方法的时候调用
        
// 派生类中不用在次提供析构函数
        ~BaseResource()
        {
            Dispose(
false);
        }

        
// 如果你已经调用了Dispose方法后在调用其他方法会抛出ObjectDisposedException
        public void DoSomething()
        {
            
if (this.disposed)
            {
               
throw new ObjectDisposedException();
            }
        }
    }

   
   
public class MyResourceWrapper : BaseResource
    {
        
// 托管资源
        private ManagedResource addedManaged;
        
// 非托管资源
        private NativeResource addedNative;
        
private bool disposed = false;
      
        
public MyResourceWrapper()
        {           
        }

        
protected override void Dispose(bool disposing)
        {
            
if (!this.disposed)
            {
               
try
                {
                    
if (disposing)
                    {                        
                        addedManaged.Dispose();
                    }
                    
                    CloseHandle(addedNative);
                    
this<;/span>.disposed = true;
                }
                finally
                {                  
                    base.Dispose(disposing);
                }
            }
        }
    }




TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-26 10:29 | 显示全部楼层
DateTime结构

     表示时间上的一刻,通常以日期和当天的时间表示。 它有很多比较重要的方法和属性这里我就的列举了。

    它不能直接被赋值成 null,

     在SqlServer 2000中datetime 的空值即默认值为1900-01-01 00:00:00,

     C#中DateTime的空值是最小值0001-01-01 00:00:00,

    我建议是赋值成以下的方法
          DateTime s = default( DateTime );
       或是
         DateTime s = DateTime.MinValue;
      比较的时候直接
         if(s == DateTime.MinValue;)// 到了显示的时候,判断一下,如果是s == DateTime.MinValue 你就把这个字段赋值为空

Math

   为三角函数、对数函数和其他通用数学函数提供常数和静态方法。



MarshalByRefObject 类   

     允许在支持远程处理的应用程序中跨应用程序域边界访问对象。  

       Marshal 单词意思:vt. 整理;引领;编列 vi.排列,  



            应用程序域是一个操作系统进程中一个或多个应用程序所驻留的分区。

           同一应用程序域中的对象直接通信。不同应用程序域中的对象的通信方式有两种:  



               一种是跨应用程序域边界传输对象副本,  

                一种是使用代理交换消息。



   下面的代码示例演示在另一个应用程序域中执行代码的最简单方法。该示例定义一个继承 MarshalByRefObject 的 Worker 类,该类的某个方法可用来显示在其中执行代码的应用程序域的名称。该示例在默认应用程序域和新的应用程序域中创建 Worker 的实例。

TA的精华主题

TA的得分主题

发表于 2012-11-26 18:02 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-11-27 16:15 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2016-6-16 11:31 | 显示全部楼层
有没有vb.net的讲解?这个C#看起来比较吃力
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-16 02:56 , Processed in 0.047383 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表