1.索引器

 索引器允许类或结构的实例按照与数组相同的方式进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。它可以像数组那样对对象使用下标。它提供了通过索引方式方便地访问类的数据信息的方法。

  要声明类或结构的索引器,使用this关键字。

 class SampleCollection<T>
    {
        private T[] arr = new T[100];
        public T this[int i]
        {
            get {
                return arr[i];
            }
            set {
                arr[i] = value;
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
           //SampleCollection<int> i=new SampleCollection<int>();
           //i[0] = 1;
          // Console.WriteLine(i[0]);
            SampleCollection<string> s = new SampleCollection<string>();
            s[0] = "HELLO";
            Console.WriteLine(s[0]);
            Console.ReadKey();
         }
    }

2.静态构造函数的使用方法

  这道题比较有意思,先看下代码及运行的结果:

class Class1
    {
        public static int Count = 0;
        static Class1()
        {
            Count++;
        }
        public Class1()
        {
            Count++;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {

            Class1 o1 = new Class1();
            Class1 o2 = new Class1();
            Console.WriteLine(Class1.Count);
            Console.ReadKey();
         }
    }

C#相关

从调试的结果来看,运行到这行代码Class1 o1 = new Class1();调用static Class1() { Count++; }函数,然后会接着调用public Class1() { Count++; },再运行到Class1 o2 = new Class1();这行代码时,就只调用public Class1() { Count++; },(刚开始会认为只执行其中的一个函数,没想到结果会是这样,他们不是重载的关系吗?)

解释:

使用静态函数(静态方法),编译器会在编译程序代码的时候,将静态方法当作全局函数对待。
可以说静态函数(方法)是属于类的;
普通函数(方法)是属于对象的。

3.又一有意思的题目(这样的题目可以看出水平呀。。。)

 直接上代码和运行结果了

 public class A
    {
        public virtual void Fun1(int i)
        {
            Console.WriteLine(i);
        }
        public void Fun2(A a)
        {
            a.Fun1(1);
            Fun1(5);
        }
    }
    public class B : A
    {
        public override void Fun1(int i)
        {
            base.Fun1(i+1);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {

            B b = new B();
            A a = new A();
            a.Fun2(b);
            b.Fun2(a);
            Console.ReadKey();
         }
    }
View Code

相关文章:

  • 2021-12-22
  • 2022-01-19
  • 2021-08-15
  • 2021-09-28
  • 2021-10-20
  • 2022-12-23
  • 2021-05-20
猜你喜欢
  • 2022-01-26
  • 2021-04-19
  • 2022-12-23
  • 2021-12-16
  • 2021-07-18
  • 2022-12-23
  • 2022-01-04
相关资源
相似解决方案