zoukankan      html  css  js  c++  java
  • C#方法有关内容的总结--C#基础

    1、静态方法与实例方法

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace 静态方法与实例方法
    {
    class Program
    {
    int exampleVar = 0;//静态成员
    static int staticVar = 0;//静态成员
    static void staticMethod(){
    staticVar = 1;
    //exampleVar = 1;不能调用实例成员
    } //只能访问静态成员
    void exampleMethod() {
    //实例成员方法可以调用静态和实例任何成员
    staticVar = 1;
    exampleVar = 1;
    //this.staticVar = 2;
    //在实例方法中可以使用this
    }
    static void Main(string[] args)
    {
    staticMethod();//直接调用静态方法;同Program.staticMethod();
    //调用实例方法时,将类进行实例化
    staticVar = 2;//直接调用静态成员,也等价于 Program.staticVar = 2;
    Program p = new Program();
    p.exampleMethod();
    p.exampleVar = 1;
    //Program.exampleMethod();不能通过访问静态方法的途径访问实例方法,要通过对象去访问
    }
    }
    }

    2、虚方法

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace 虚方法等知识
    {
    class class1{
    //指定方法public;默认方法是私有的,只能在当前类中进行访问
    //需要在其他类中进行访问,就要指定public;访问权限是最高的在项目内部都可以访问
    public virtual void virtualMethid()//虚方法可以在派生类中重写
    {
    Console.WriteLine("这是一个虚方法!");
    }
    public void nonVirtualMethod() {
    Console.WriteLine("这是一个非虚方法");
    }
    }
    class class2:class1 { //class2继承class1
    public new void nonVirtualMethod() {
    Console.WriteLine("这是一个新方法!");
    }
    public override void virtualMethid()//重写虚方法
    {
    //base.virtualMethid();
    Console.WriteLine("这是新写的虚方法!");
    }
    }
    class Program
    {
    static void Main(string[] args)
    {
    class1 c1 = new class1();
    c1.virtualMethid();
    c1.nonVirtualMethod();
    class2 c2 = new class2();
    c2.virtualMethid();
    c2.nonVirtualMethod();
    c1 = c2;
    c1.virtualMethid();
    c1.nonVirtualMethod();
    //调用了c2的虚方法
    //虚方法的实现不是一成不变的,而非虚方法是一成不变的
    Console.ReadKey();
    }
    }
    }

    3、重写方法

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace 重写方法
    {
    //方法名称和参数列表不能改变
    class class1
    {
    public virtual void Write() {
    Console.WriteLine("这是一个虚方法,可以被重写!");
    }
    }
    class class2:class1
    {
    public override sealed void Write()//重写方法,不能更改权限修饰符
    {
    Console.WriteLine("这是一个重写方法,被称为一重写的方法!");
    }
    }
    class class3:class2
    {
    }
    //如果不想让继承class2的类再去重写Write()方法
    //那就采用关键字sealed
    class Program
    {
    static void Main(string[] args)
    {
    class1 c1 = new class1();
    c1.Write();
    class2 c2 = new class2();
    c2.Write();
    //override和virtual配合
    Console.ReadKey();
    }
    }
    }

    4、外部方法

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Runtime.InteropServices;

    namespace 外部方法
    {
    //方法位置:通常放在类当中,并且与其他方法保持平级关系
    class Program
    {//使用之前应该引用命名空间:
    [DllImport("User32.dll")]//调用库文件(alt+shift+f10)
    //声明外部方法 使用关键字extern由于配合DllImpor,需要static
    public static extern int MessageBox(int h, string m, string c, int type);
    static int Main(string[] args)
    {
    Console.WriteLine("请输入您的名字:");
    String name = Console.ReadLine();
    //利用return进行弹出对话框, 所以需要精main方法改为in他类型
    return MessageBox(0, "您好:" + name + " " + "欢迎来到奇客艺术博客","欢迎提示", 0);
    }
    }
    }

    5、分部方法

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace 分布方法
    {
    public partial class Programe
    {
    //声明与定义一个分部类
    //生命分部方法
    //方法默认为私有,也可以加上
    partial void Write();//声明
    partial void Write() {
    Console.WriteLine("这是一个分部方法");
    }
    }
    public partial class Programe
    {
    static void Main(string[] args)
    {
    Programe p = new Programe();
    p.Write();
    Console.ReadKey();
    }
    }
    }

    6、方法重载

    决定方法是否构成重载有三个条件

    1)在同一个类中

    2)方法名相同

    3)参数列表不同

    利用重载分别求圆、矩形、三角形的面积

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace 方法重载
    {
    class Program
    {
    static void WriteArea(double radius) {
    double Area = System.Math.PI*radius*radius;
    Console.WriteLine("您所求圆的面积是:{0}",Area);
    }
    static void WriteArea(double width,double height) {
    double Area = width * height;
    Console.WriteLine("矩形面积为:{0}", Area);
    }
    //三角形面积
    static void WriteArea(double a,double b,double c) {
    double p = (a + b + c) / 2;
    double Area = System.Math.Sqrt(p * (p - a) * (p - b) * (p - c));
    Console.WriteLine("三角形的面积是{0}",Area);
    }
    static void Main(string[] args)
    {
    WriteArea(3);
    WriteArea(20,23);
    WriteArea(3,4,5);
    Console.ReadKey();
    }
    }
    }

    7、Main方法

    main方法有四种表现形式
    public static void Main()
    public static int Main()
    public static void Main(string[] args)
    public static int Main(string[] args)

     指定命令行参数

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace Main方法
    {
    class Program
    {
    static void Main(string[] args)
    {
    //查看命令行参数数组长度
    //指定命令行参数
    Console.WriteLine("有{0}个命令行参数", args.Length);
    foreach(string str in args)
    Console.WriteLine(str);
    Console.ReadKey();
    //项目->右击->属性->调试
    }
    }
    }

     

  • 相关阅读:
    状压DP
    题解:中位数
    题解:三只小猪
    二分图最大匹配
    AC自动机
    题解 P1137 【旅行计划】
    题解 P1280 【尼克的任务】
    DFT&IDFT学习笔记
    emacs配置
    莫比乌斯反演推导即μ函数的证明
  • 原文地址:https://www.cnblogs.com/qikeyishu/p/7499362.html
Copyright © 2011-2022 走看看