effective hierarchy(一)之 从array说起(2)

本文介绍了C# 2.0中的枚举关键字及其用法,包括枚举的基础概念、注意事项及建议。同时展示了如何使用枚举来创建具有特定意义的数值集合,以及如何利用Enum类型进行实例的比较和转换。

复习:

从上一节,可以看到2.0的数组有两个直接突破:a.从“原型数组”向引用类型的突破;b.嵌套数组元素间维度和容量可变.

 

数组暂时告一段落,进入与数组相关的下一个话题。

 

MSDN,C#2.0:

一、枚举关键字

1、基础

(1)枚举是指一个唯一的类型,它包含了一套名字常量,后者被称为枚举器列表(enumerator list);

(2)枚举使用关键字enum声明,语法为

        enum 枚举名[:类型名称]{枚举元素1,枚举元素2,枚举元素3...枚举元素n};

(3)枚举类型使用除char以外的任何基础数据类型(underlying type)进行存储;默认的是整型,表示为int32;

(4)缺省情况下,枚举元素列表的第一个元素是从数值0开始,随后的元素值递增幅度1;显式地为元素赋值,其值以所赋值为准;

(5)enum E的缺省值是表达式(E)0;

(6)与特性关联使用(此部分不感兴趣可跳过):当枚举的元素由位字段的或操作(bitwise OR operation)组成,并且使用System.FlagsAttribute时,enum关键字的行为受特性(attribute)的影响而发生变化,可以使用控制台类方法(console class method)、表达式计算器(expression evaluator)等写小程序观察。具体可见http://msdn.microsoft.com/en-us/library/system.flagsattribute(VS.80).aspx

 

2、注意事项

(1)枚举元素名不能包含空格;

(2)枚举元素的类型转换为整数类型,须进行显式转换;如int x = (int)Days.Sun;

 

3、建议(robust programming)

给枚举增加新值或改变枚举成员的值,可能会导致源代码依赖(dependant source code)问题,例如,在使用枚举的switch分支语句中。

 

//用途示例

// keyword_enum2.cs
// Using long enumerators

using System;
public class EnumTest 
{
    enum Range :long {Max = 2147483648L, Min = 255L};
    static void Main() 
    {
        long x = (long)Range.Max;
        long y = (long)Range.Min;
        Console.WriteLine("Max = {0}", x);
        Console.WriteLine("Min = {0}", y);
    }
}

 

 二、Enum类型

(1)提供枚举的基类;语法为

 [SerializableAttribute]
 [ComVisibleAttribute(true)]
 public abstract class Enum : ValueType, IComparable, IFormattable, IConvertible
(2)Enum提供比较该类实例的方法、把实例值转换为字符串或反之、创建指定枚举的实例;

(3)可以把枚举视为位字段,这属于FlagsAttribute的范畴,不在此多说;

(4)枚举类型继承于值类型(ValuteType),实现了IComparable、IFormattable和IConvertible接口。使用Convert类自定义转换,以代替该类IConvertible的显式接口成员实现。

 

//用途示例
using System;

public class EnumTest {
    enum Days { Saturday, Sunday, Monday, Tuesday, Wednesday, Thursday, Friday };
    enum BoilingPoints { Celsius = 100, Fahrenheit = 212 };
    [FlagsAttribute]
    enum Colors { Red = 1, Green = 2, Blue = 4, Yellow = 8 };

    public static void Main() {

        Type weekdays = typeof(Days);
        Type boiling = typeof(BoilingPoints);

        Console.WriteLine("The days of the week, and their corresponding values in the Days Enum are:");

        foreach ( string s in Enum.GetNames(weekdays) )
            Console.WriteLine( "{0,-11}= {1}", s, Enum.Format( weekdays, Enum.Parse(weekdays, s), "d"));

        Console.WriteLine();
        Console.WriteLine("Enums can also be created which have values that represent some meaningful amount.");
        Console.WriteLine("The BoilingPoints Enum defines the following items, and corresponding values:");

        foreach ( string s in Enum.GetNames(boiling) )
            Console.WriteLine( "{0,-11}= {1}", s, Enum.Format(boiling, Enum.Parse(boiling, s), "d"));

        Colors myColors = Colors.Red | Colors.Blue | Colors.Yellow;
        Console.WriteLine();
        Console.WriteLine("myColors holds a combination of colors. Namely: {0}", myColors);
    }
}

 

----------------------------------------------------------------------------------------------------

小结:枚举是属于数值类型,即在栈中创建。并且,相对于数组,它提供了方便地使用性。争论的焦点是它带有“硬代码”的特性,一般作为底层支撑字典应用。

Matlab基于粒子群优化算法及鲁棒MPPT控制器提高光伏并网的效率内容概要:本文围绕Matlab在电力系统优化与控制领域的应用展开,重点介绍了基于粒子群优化算法(PSO)和鲁棒MPPT控制器提升光伏并网效率的技术方案。通过Matlab代码实现,结合智能优化算法与先进控制策略,对光伏发电系统的最大功率点跟踪进行优化,有效提高了系统在不同光照条件下的能量转换效率和并网稳定性。同时,文档还涵盖了多种电力系统应用场景,如微电网调度、储能配置、鲁棒控制等,展示了Matlab在科研复现与工程仿真中的强大能力。; 适合人群:具备定电力系统基础知识和Matlab编程能力的高校研究生、科研人员及从事新能源系统开发的工程师;尤其适合关注光伏并网技术、智能优化算法应用与MPPT控制策略研究的专业人士。; 使用场景及目标:①利用粒子群算法优化光伏系统MPPT控制器参数,提升动态响应速度与稳态精度;②研究鲁棒控制策略在光伏并网系统中的抗干扰能力;③复现已发表的高水平论文(如EI、SCI)中的仿真案例,支撑科研项目与学术写作。; 阅读建议:建议结合文中提供的Matlab代码与Simulink模型进行实践操作,重点关注算法实现细节与系统参数设置,同时参考链接中的完整资源下载以获取更多复现实例,加深对优化算法与控制系统设计的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值