博文

探讨一下静态构造函数(二)(C#版)(2007-10-14 23:10:00)

摘要:因为前面的一篇的文章已介绍了静态构造函数的一些特性,这篇文章着重介绍静态构造函数的一些用法: 代码如下: //代码段一 using System;class MyClass{public static int x;public static int y;static MyClass (){  x = 100;  y = 200;}  static void Main(){  Console.WriteLine("{0},{1}",MyClass.x,MyClass.y);//在C#中静态成员属于类的成员,不//需要实例化对象来调用。 }} 运行结果:100,200 //代码段二 class Test    {        private static int id = 5;        public static int Id        {            get            {                return id;            }        }           }    class Test1    {&......

阅读全文(2761) | 评论:4

探讨一下静态构造函数(一)(C#版)(2007-10-13 14:34:00)

摘要:静态构造函数是C#的一个新的特性。这里的"新"有别于C++。这是一个特殊的构造函数,它在创建类的第一个对象(实例)之前被调用。执行时间不能确定,但它肯定是创建实例之前。可能当时加载程序集。 下面看一下静态构造函数的代码语法: public class myClass {       static myClass()        {          }  } 构造函数的一些提示: 1)在一个类里面只有唯一的一个静态构造函数,即静态构造函数不能重载。 代码如下: //这是允许的 ,因为它们在执行时间上面是完全不同的。 public class myClass {       static myClass()        {          }        public myClass()      {      } } 2)静态构造函数应该没有参数。这是因为静态构造函数由CLR来调用的,没有用户可以传递参数给它。 3)静态构造函数只可以存取类的静态成员。这是因为在类的实例成员具体到对象实例,因此静态函数如果允许运行实例成员,将会反应到所有对象实例的变化,这是不切实际的。 4)在静态函数的定义中不应该获得修改。这是因为静态函数的调用是由CLR来控制的,而不是对象。因此你不需要也无必要去修改。......

阅读全文(2448) | 评论:2

探讨一下构造函数中base和this的用法与区别(C#版)(2007-10-12 21:45:00)

摘要:这篇文章主要介绍一下在构造函数中base和this的用法和区别的。接下来的文章会陆续介绍一下静态变量和静态构造函数。希望大家能够将意见反馈给我。 代码最具有说服性了,看下面代码吧: //代码段一 public  class ConstructorProgram1    {      private string name;      public ConstructorProgram1()      {          Console.WriteLine("No Info Left");      }      public ConstructorProgram1(string name)      {          this.name = name;          Console.WriteLine("name=" + this.name);      }      } 这里我重载了另外一个构造函数,里面的this作为一个指针指示了一个类的引用。即是ConstructorProgram1类的引用。这个很简单,但不是重点。 这篇文章最重点要说一下:this和base在构造函数中扮演的角色。 看下面的代码: public class ConstructorProgram    {       private string name;   ......

阅读全文(3436) | 评论:1

学习C#引用参数的体会(2007-02-12 01:10:00)

摘要:下面我总结下我对out和ref引用参数的看法:              1.out和ref引用参数的相同点:都是通过引用传递参数给函数;              2.out和ref引用参数的不同点是:用ref引用传递参数,该参数必须经过初始化,并且不能在调用它的函数中初始化,以下例子是错误的:                              namespace refConsoleApp                                 {                                      class MyRefClass               ......

阅读全文(8929) | 评论:1

学习C#委托用法的体会(2007-02-12 01:08:00)

摘要:委托是一种可以把引用封装成命名或者匿名函数的类型.委托的声明制定了一个函数签名,其中包含一个返回类型和参数列表.示例:delegate void SampleDelegate(string message).这里声明要用到关键字delegate.接着声明该委托类型的变量,初始化这个变量为与委托有相同签名的函数引用.最后可以使用委托变量调用这个函数.     下面来说一下与委托有关联的命名函数与匿名函数:当你用一个命名方法来实例化一个委托的时候,该方法会作为一个参数来传递,示例:      //声明一个委托       delegate void Del(int x);      //定义一个命名函数      void DoWork(int k)        { /*                  */}       //使用该命名方法作为参数来实例化委托        Del d=obj.DoWork;      以下给出完整的示例://声明一个委托delegate void Del(int i,double j);class MathClass{   //声明相同签名的函数   void MultiplyNumbers(int m,double n)   {         Console.W......

阅读全文(3878) | 评论:0