Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 函数中不同类型的输入_C#_Libraries - Fatal编程技术网

C# 函数中不同类型的输入

C# 函数中不同类型的输入,c#,libraries,C#,Libraries,我正在创建我的第一个库,我想创建不同类型的输入(例如:Graphics.DrawLine();可以由四个浮点数或两点决定,等等)。如何创建类似的东西?您只需创建具有不同参数的多个方法 例如: public class MyGraphics { public bool Draw(Vector2 position, bool big = false) { } public void Draw(Line2 line) { } public v

我正在创建我的第一个库,我想创建不同类型的输入(例如:Graphics.DrawLine();可以由四个浮点数或两点决定,等等)。如何创建类似的东西?

您只需创建具有不同参数的多个方法

例如:

public class MyGraphics
{

    public bool Draw(Vector2 position, bool big = false)
    {
    }

    public void Draw(Line2 line)
    {
    }
    public void Draw(Triangle2 triangle)
    {
    }

    public void Draw(Polygon2 polygon)
    {
    }

    public void Draw(Line2[] edges)
    {
    }
}
以后用作

{
    MyGraphics g = ...
    Line2 line = ...
    Triangle2 trig = ...

    g.Draw(line);  // calls `.Draw(Line2)`
    g.Draw(trig);  // calls `.Draw(Triangle2)`
}

它被称为重载,您基本上使用不同的参数类型和参数数量多次声明相同的方法。一个典型的实现可能是所有重载都调用具有实际实现的同一个重载,或者您有一个它们都调用的包含该重载的私有方法。示例:
public void Initialize(点p,大小s){…}public void Initialize(int x,int y,int w,int h){…}
。请注意,重载必须根据参数类型或参数数量而有所不同。仅仅重命名参数是不够的,它们的实际类型或数量必须有所不同。你可以在这里了解更多-。@KonradRudolph嗯,公平地说,这两个都是:)重载扩展方法…@KonradRudolph好的,把它们变成了普通的methods@ColinM-我说的
it
是指超载。