码迷,mamicode.com
首页 > Windows程序 > 详细

C# 重载的几种实现

时间:2016-04-20 13:40:45      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:

算法重用是非常普遍的需求,在C#中可以使用如下手段实现,非常简单,自己记录一下,方便查询。

以一个小功能为例来说明一下:打印1-5这5个数,和A-E这5个字符。

 

重载方式

static void Main(string[] args)
{
    PrintValues(1, 5);
    PrintValues(A, E);
    Console.ReadLine();
}


private static void PrintValues(int startIndex, int endIndex)
{
    if (startIndex > endIndex)
    {
        int temp = endIndex;
        endIndex = startIndex;
        startIndex = temp;
    }

    for (int i = startIndex; i <= endIndex; i++)
    {
        Console.WriteLine(i.ToString());
    }
}

private static void PrintValues(char startIndex, char endIndex)
{
    if (startIndex > endIndex)
    {
        char temp = endIndex;
        endIndex = startIndex;
        startIndex = temp;
    }

    for (char i = startIndex; i <= endIndex; i++)
    {
        Console.WriteLine(i.ToString());
    }
}

 

默认值方式

static void Main(string[] args)
{
    PrintValues(1);
    PrintValues(A);
    Console.ReadLine();
}


private static void PrintValues(int startIndex, int endIndex = 5)
{
    if (startIndex > endIndex)
    {
        int temp = endIndex;
        endIndex = startIndex;
        startIndex = temp;
    }

    for (int i = startIndex; i <= endIndex; i++)
    {
        Console.WriteLine(i.ToString());
    }
}

private static void PrintValues(char startIndex, char endIndex = E)
{
    if (startIndex > endIndex)
    {
        char temp = endIndex;
        endIndex = startIndex;
        startIndex = temp;
    }

    for (char i = startIndex; i <= endIndex; i++)
    {
        Console.WriteLine(i.ToString());
    }
}

好吧,对于很多含有默认值的函数来说,这个是有效减少重载的方式。

 

泛型方式
  这个例子我简单试了一下,没找到使用泛型合适的方式,壮士,教我!好在我直接使用dynamic实现了,也不怎么纠结。看其中的交换的那个可能实现:

static void Main(string[] args)
{
    int startIndex = 1;
    int endIndex = 5;
    Swap<int>(ref startIndex, ref endIndex);

    char startCharIndex = A;
    char endCharIndex = E;
    Swap<char>(ref startCharIndex, ref endCharIndex);

    Console.ReadLine();
}

private static void Swap<T>(ref T startIndex, ref T endIndex)
{
    T temp = endIndex;
    endIndex = startIndex;
    startIndex = temp;
}

  当然了,强大的泛型可不是这么简单货,感兴趣自己搜索。

 

dynamic方式

static void Main(string[] args)
{
    PrintValues(1, 5);
    PrintValues(A, E);
    Console.ReadLine();
}

private static void PrintValues(dynamic startIndex, dynamic endIndex)
{
    if (startIndex > endIndex)
    {
        dynamic temp = endIndex;
        endIndex = startIndex;
        startIndex = temp;
    }

    for (dynamic i = startIndex; i <= endIndex; i++)
    {
        Console.WriteLine(i.ToString());
    }
}

 

  简单,当只需要运行时行为的时候,或者是不希望编辑器检查的时候,dynamic真是方便。

 

C# 重载的几种实现

标签:

原文地址:http://www.cnblogs.com/dxy1982/p/5412080.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!