Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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#_.net_Visual Studio_Parameters_Properties - Fatal编程技术网

C#方法属性参数

C#方法属性参数,c#,.net,visual-studio,parameters,properties,C#,.net,Visual Studio,Parameters,Properties,我想添加一个属性作为参数 /// <summary> /// Permet de passer à la prochaine valeur de la <see cref="Dimension" />. /// </summary> public void DimensionSuivante() { if (Dimension == enuDimension.Petite)

我想添加一个属性作为参数

    /// <summary>
    ///     Permet de passer à la prochaine valeur de la <see 
    cref="Dimension" />.
    /// </summary>
    public void DimensionSuivante()
    {
        if (Dimension == enuDimension.Petite)
            Dimension = enuDimension.Maximale;
        else
            Dimension += 1;
    }

    /// <summary>
    ///     Permet de passer à la prochaine valeur de la <see cref="Qualite" 
    />.
    /// </summary>
    public void QualiteSuivante()
    {
        if (Qualite == enuQualite.Faible)
            Qualite = enuQualite.Excellente;
        else
            Qualite += 1;
    }

    /// <summary>
    ///     Permet de passer à la prochaine valeur de la <see 
    cref="Sensibilite" />.
    /// </summary>
    public void SensibiliteSuivante()
    {
        if (Sensibilite == enuSensibilite.ISO_800)
            Sensibilite = enuSensibilite.ISO_64;
        else
            Sensibilite += 1;
    }

不能通过引用传递属性。见和

但通常情况下,你不需要这样做。这里就是这样。我认为你的方法应该更像这样:

static T IncrementEnum<T>(T value)
{
    int[] values = Enum.GetValues(typeof(T)).Cast<int>().ToArray();
    int i = (int)(object)value,
        min = values.Min(),
        max = values.Max();

    return (T)(object)(i == max ? min : i + 1);
}

上面的方法有些昂贵,因为每次调用它时,它都必须确定
min
max
值。您可以将其封装在泛型类型中,并在静态构造函数中初始化这些值,如果这是性能开销的问题。

在上一段代码中,您需要在PropertyName之后定义变量名。
static T IncrementEnum<T>(T value)
{
    int[] values = Enum.GetValues(typeof(T)).Cast<int>().ToArray();
    int i = (int)(object)value,
        min = values.Min(),
        max = values.Max();

    return (T)(object)(i == max ? min : i + 1);
}
Dimension  = IncrementEnum(Dimension);