c# 类、枚举的定义与使用

c# 类、枚举的定义与使用

类的访问权限修饰符:

类成员的默认级别为private。

public、protected、private,同cpp。不同于C++的部分:

abstract:抽象类只能派生,不能实例化。

internal:内部类,只有所在类才能访问。

sealed:不允许从此类派生。

new:仅允许在嵌套类声明时使用,表明类中隐藏了由基类中继承而来的并且与基类中同名的成员。

partial:分部类型定义。允许将类、结构或接口的定义拆分到多个文件中。

public partial class CoOrds
{
    private int x;
    private int y;

    public CoOrds(int x, int y)
    {
        this.x = x;
        this.y = y;
    }
}

public partial class CoOrds
{
    public void PrintCoOrds()
    {
        Console.WriteLine("CoOrds: {0},{1}", x, y);
    }

}

class TestCoOrds
{
    static void Main()
    {
        CoOrds myCoOrds = new CoOrds(10, 15);
        myCoOrds.PrintCoOrds();

        // Keep the console window open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}
// Output: CoOrds: 10,15
/*分部类型定义允许将类、结构或接口的定义拆分到多个文件中。
该示例在一个分部类定义中声明 CoOrds 类的字段和构造函数,在另一个分部类定义中声明成员 PrintCoOrds。*/

类中成员

字段——就是成员变量。

属性——C#中特有的,属性的声明一般和类中定义的 私有字段 配合使用,作为对这个私有字段的访问器。

//属性、字段 
using System;
using System.Linq;
using System.Text;

namespace ConsoleApplication2{
    class program{
        private int a;
        public int A{ //不能和字段同名
             get{
                if (a == 1) return a;
                else return 100;
             }
            set{  //value是默认参数,指代传入的值
                if (value > 0) a = 1;
                else a =value;
            } 
        }
    }
    class mainclass{
        static void Main(string[] args){
            program obj = new program();
            obj.A = 3;
            Console.WriteLine(obj.A);
            obj.A = -3;
            Console.WriteLine(obj.A);
            Console.Read();
        }
    }
}
/*
 输出
 1
 100
 */

方法——就是成员函数。

C#允许类里面定义新类,称为嵌套类,cpp也能。

C#不能类内声明类外定义。


c#枚举与c++也不同。

//类、枚举的定义与使用
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication2
{
    public class c_circle
    {
        public string color;                //定义字段
        public string description          //定义属性
        {
            get { return description; }
            set { description = value; }
        }

        public double radius { get; set; }//定义属性,简略形式
        public c_circle(string color = "blue", double a = 1)
        {
            this.color = color;
            radius = a;
        }
        public double calc_area()
        {
            return radius * radius * 3.14;
        }
      
    }     //class定义结束后没有‘;’,与C++不同
    public enum ZoneEnum  //枚举类型,体会xml注释的样子
    {
        /// 
        /// 亚洲
        /// 
        Asia = 1,
        /// 
        /// 南极洲
        /// 
        Antarctica = 7
    }//同样没有‘;’,与C++不同
   
    class Program
    {
        
        static void Main(string[] args)
        {
            c_circle obj_circle = new c_circle();

            Console.Write("hi\t" + "{0}\n", obj_circle.calc_area());

            ZoneEnum obj_ZoneEnum = ZoneEnum.Asia;//cpp形式会是obj_ZoneEnum=Aisa
            Console.Write(obj_ZoneEnum); //输出为Aisa,而Cpp会输出1
            obj_ZoneEnum=(ZoneEnum)7;//支持数字->枚举变量的强制转换
            Console.Read();
        }
    }
}
/*
 输出;
 * hi 3.14
 * Aisa
 */

readonly 关键字

readonly 关键字与 const 关键字不同。const 字段只能在该字段的声明中初始化。readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。另外,const 字段为编译时常数,而 readonly 字段可用于运行时常数。


你可能感兴趣的:(c# 类、枚举的定义与使用)