c#中相同类型的多个别名

问题描述 投票:0回答:1

我尽可能将Delegates作为参数。所以我通常会遇到一个委托的多个参数属于同一类型的情况,我试图使其更具可读性。为此,请尝试使用c#关键字“ using”指令。

using System;
using FirstNumber = System.Int32;
using SecondNumber = System.Int32;
using Result = System.Int32;

public class FunctionPointers
{
    Func<FirstNumber, SecondNumber, Result> add;

    public FunctionPointers(Func<FirstNumber, SecondNumber, Result> op)
    {
        add = op;
    }
}

Intellisense snapshot从屏幕截图中可以明显看出,所有参数的别名都相同。有没有办法纠正这个问题?或别名使用不正确?

c# delegates alias using
1个回答
0
投票

我不能说我完全理解您的方法背后的原因,但重要的是要考虑到您实质上声明的是:

FirstNumber = SecondNumber = Result = System.Int32;

由于所有这些标识现在都指向同一类型,System.Int32。因此,Visual Studio选择使用第一作者分配的Allia来填充智能感知。

关于委托人的声明,请考虑您只是定义所需的签名,即“ IN和OUT”类型。最终“包装” /“封装”的方法将提供参数的标识。

为了获得可读性,如果确实要采用这种方式,请考虑使用所需的“可读”身份定义自己的委托类型:

public class FunctionPointers
{
    Operator Add;

     public FunctionPointers(Operator addOp)
     {
            Add = addOp;
     }       
}

public delegate Int32 Operator(Int32 FirstNumber, Int32 SecondNumber);

否则,为“正常”方式,并带有方法上的标识:

Func<Int32,Int32,Int32> add;

public FunctionPointers()
{
    add = AddMethod;
}

public Int32 AddMethod(Int32 FirstNumber, Int32 SecondNumber)
{
    return FirstNumber + SecondNumber;
}

© www.soinside.com 2019 - 2024. All rights reserved.