C#中,用类定义类中的函数,不知道怎么理解?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
class Program
{

    static void Main(string[] args)
    {
        Complex z1 = new Complex(73, 89);
        Complex z2 = new Complex(21, 16);
        Complex z3 = Complex.Add(z1, z2);
    }

    class Complex
    {
        public double a;
        public double b;
        public Complex(double real, double imagi)
        {
            a = real;
            b = imagi;
        }
        public static Complex Add(Complex z1, Complex z2)
        {
            return new Complex(z1.a + z2.a, z1.b + z2.b);
        }
    }
}

}

不能理解静态函数中,用自身类定义类内的函数,应该怎么理解?

这有什么不能理解的。静态函数当然可以调用自身类的构造函数,而且这是一种很常见的做法,比如设计模式中的单键模式、工厂模式都是这么做的。

 class Singleton
{
    private static Singleton instance;
        private Singleton() { }
        public static Singleton GetInstance()
        {
            if (instance == null)
                    instance = new Singleton();
                return instance;
        }
}

再给一个实际的例子,比如DateTime.Now,它是一个静态属性,内部就调用了DateTime的构造函数

         public static DateTime Now {
            get {
                Contract.Ensures(Contract.Result<DateTime>().Kind == DateTimeKind.Local);

                DateTime utc = UtcNow; 
                Boolean isAmbiguousLocalDst = false;
                Int64 offset = TimeZoneInfo.GetDateTimeNowUtcOffsetFromUtc(utc, out isAmbiguousLocalDst).Ticks;
                long tick = utc.Ticks + offset;
                if (tick>DateTime.MaxTicks) {
                    return new DateTime(DateTime.MaxTicks, DateTimeKind.Local);
                }
                if (tick<DateTime.MinTicks) {
                    return new DateTime(DateTime.MinTicks, DateTimeKind.Local);
                }
                return new DateTime(tick, DateTimeKind.Local, isAmbiguousLocalDst);  
            }
        }

http://referencesource.microsoft.com/#mscorlib/system/datetime.cs,1cd5dd408a32124f

这种做法很常见啊,比如DataTable.NewRow静态方法返回一个新建的Row对象

调用其它函数,实例化。静态函数只是不能直接访问其它函数。

你不要把它想成有特殊,就当一个普通函数即可,返回的就是自身这个类型的实例

就是一个引用类型的参数,没什么特殊的啊。

都不要回答的那么术语话啊,比如一个咖啡机,你点完按钮是想要得到一杯充好的咖啡,出咖啡的过程是你要看到的,**但是在咖啡机内部进行的水和咖啡粉的混合
是不需要你看到的,因为你也用不到这个操作**,所以啊这个配咖啡的过程是类内部的一个函数,而出咖啡的过程是调用了配咖啡这个方法