整数扩展方法将整数设置为0

时间:2016-03-31 03:42:13

标签: c# .net visual-studio

我的代码充斥着

someInt=0;

我不断地“重置”我的整数。

是否可以实现将整数设置为0的扩展方法?

这样的事情:

public static void Reset(this int num) =>num=0;

预期用途是:

someInt.Reset;

但是这不起作用,因为整数是值类型。

2 个答案:

答案 0 :(得分:2)

您可以使用结构作为结构是值类型,即

public struct IntegerHolder
{
    public int val;

    public reset() {
        myInt = 0
    }
}
public void main()
{
    IntegerHolder MyInteger
    MyInteger.val = 5 //Set the val to 5
    MyInteger.reset() //Reset it back to 0
}

但使用int = 0 可能效率更高。只提供一个有用的解决方案

答案 1 :(得分:1)

请参阅Impossible to use ref and out for first ("this") parameter in Extension methods? - 您需要使用refout作为参数的选项,但它们与this修饰符互斥

我不认为你有一个好主意 - 因为代码foo = 0;是简洁的,并且很明显它的作用 - 将它包装在扩展方法中是没有意义的,因为它没有解决任何问题问题,它增加了复杂性,并增加了错误的可能性(如果Reset的一个用户需要重置为1而不是0,并盲目地更改Reset的定义,那该怎么办? ?它会破坏你的其余代码。

不要只是因为它在那里使用语言功能 - 一个优秀的程序员知道何时使用语言功能。

如果您确实想要添加这样的功能,请使用类似T4的内容或为Roslyn制作模板扩展名。