e心e意

导航

C#学习(类库、结构、枚举、枚举间的比较问题)

类库,分两步

(1)

namespace Squareff//使用英文,最终胜出Squareff.dll被引用
{
    public class SquareWidget
    {
        public double SideLength = 0;//声明字段
        public double Area//声明属性
        {
            get
            {
                return SideLength * SideLength;
            }
        }
    }
}

(2)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Squareff;//命名空间引用
namespace 应用其他程序集
{
    class Program
    {
        static void Main(string[] args)
        {
            SquareWidget sq = new SquareWidget();//来自类库
            sq.SideLength = 5.0;//设置边长
            Console.WriteLine(sq.Area );//输出该区域
        }
    }
}

结构

namespace 结构
{
    struct Point
    {
        /*类是引用类型,而结构是值类型
         结构是隐式密封的,这意味着结构不能被派生*/
        public int x;
        public int y;
    }
    class Program
    {
        static void Main(string[] args)
        {
            Point first, second, third;
            first.x = 10; first.y = 10;
            second.x = 10; second.y = 20;
            third.x = first.x + second.x;
            third.y = first.y + second.y;
            Console.WriteLine("first:{0},{2}",first .x,first .y);
            Console.WriteLine("second:{0},{1}",second .x,second .y);
            Console.WriteLine("third:{0},{1}",third .x,third.y);
        }
    }
}

对结构赋值

namespace 对结构赋值
{
    class CSimple
    {
        public int X; public int Y;
    }
    struct Simple
    {
        public int X; public int Y;
    }
    class Program
    {
        static void Main(string[] args)
        {
            CSimple cs1 = new CSimple(), cs2 = null;//类实例
            Simple ss1 = new Simple(), ss2 = new Simple();//结构实例
            cs1.X = ss1.X - 5;//带5赋值给ss1.X和cs1.X
            cs1.Y = ss1.Y - 10;//将10赋值给ss1.Y和cs1.Y;
            cs2 = cs1;//赋值类实例
            ss2 = ss1;//赋值结构实例
        }
    }
}

结构中的实例构造函数

namespace 实例构造函数
{
    struct Simple
        //结构可以有实例构造函数和静态构造函数,
        //但不允许有析构函数
    {
        public int x;
        //public int x=4;编译错误,在结构中字段初始化是不被允许的。
        public int y;
        public Simple(int a, int b)//带有参数的构造函数
        {
            x = a;
            y = b;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Simple s1 = new Simple();//调用隐式构造函数
            Simple s2 = new Simple(5,10);//调用构造函数
            Console.WriteLine("{0},{1}",s1 .x,s1 .y);
            Console.WriteLine("{0},{1}",s2 .x,s2 .y);
        }
    }
}

枚举

namespace 枚举
{
    enum TrafficLight
    { 
    Green,//用逗号不用分号
        Yellow,//用逗号,不用分号
        Red//后面没有符号
    }
    /*与结构相同,枚举也是值类型,
     * 枚举只有一种类型的成员:命名的整数值常量
     * 每个枚举成员被赋值一个底层的常量值
     * 在默认情况下,第一个成员值为0,并对后面
     * 成员赋值的值比前一个成员多1;     
     */
    class Program
    {
        static void Main(string[] args)
        {
            TrafficLight t1 = TrafficLight.Green;
            TrafficLight t2 = TrafficLight.Yellow;
            TrafficLight t3 = TrafficLight.Red;
            Console.WriteLine("{0},t{1}",t1,(int)t1);
            Console.WriteLine("{0},t{1}",t2,(int)t2);
            Console.WriteLine("{0},t{1}\n",t3,(int)t3);//(int)t3转换为int
        }
    }
}

枚举之间的比较问题

namespace 枚举之间的比较
{
    /*枚举是一个独特的类型
     比较不同的枚举类型成员
     * 会导致编译错误;
     */
    enum FirstEnum
    { 
    Mem1,
        Mem2
    }
    enum SecondEnum
    { 
    Mem1,
        Mem2
    }
    class Program
    {
        static void Main(string[] args)
        {
            if (FirstEnum.Mem1 < FirstEnum.Mem2)//正确,相同的枚举类型
                Console.WriteLine("true");
        //    if (FirstEnum.Mem1 < SecondEnum.Mem1)错误,不同的枚举类型
                Console.WriteLine("false");
        }
    }
}

 

posted on 2014-05-23 20:53  e心e意  阅读(162)  评论(0)    收藏  举报