博文

探讨一下静态构造函数(二)(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;
            }
        }
 &n......

阅读全文(2658) | 评论: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来控制的,而不是对象。因此你不需要也无必要去修改。......

阅读全文(2341) | 评论: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
    {
   &......

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

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

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

阅读全文(8801) | 评论: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)
   ......

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