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 + "\n" + "欢迎来到奇客艺术博客","欢迎提示", 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();
//项目->右击->属性->调试
}
}
}

C#方法有关内容的总结--C#基础的更多相关文章

  1. XCode中的单元测试:编写测试类和方法(内容意译自苹果官方文档)

    当你在工程中通过测试导航栏添加了一个测试target之后, xcode会在测试导航栏中显示该target所属的测试类和方法. 这一章演示了怎么创建测试类,以及如何编写测试方法. 测试targets, ...

  2. JS之BOM和DOM(来源、方法、内容、应用)

    1.Javascript组成(此文为转载) JavaScript的实现包括以下3个部分: 1)核心(ECMAScript):描述了JS的语法和基本对象. 2)文档对象模型 (DOM):处理网页内容的方 ...

  3. Java学习-026-类名或方法名应用之二 -- 统计分析基础

    前文讲述了类名或方法的应用之一调试源码,具体请参阅:Java学习-025-类名或方法名应用之一 -- 调试源码 此文主要讲述类名或方法应用之二统计分析,通过在各个方法中插桩(调用桩方法),获取方法的调 ...

  4. 魔法方法:构造和析构 - 零基础入门学习Python041

    魔法方法:构造和析构 让编程改变世界 Change the world by program 构造和析构 什么是魔法方法呢?我们来系统总结下: - 魔法方法总是被双下划线包围,例如__init__ - ...

  5. WordPress 无法使用the_content()方法输出内容

    在使用WordPress里在一个页面里我使用the_content()方法来输出当前页面的内容,但却显示为空,而标题,url等都没有问题 在网络上好像遇到这种情况的人很少只找到了一个说是可能是func ...

  6. python 列表排序方法reverse、sort、sorted基础篇

    python语言中的列表排序方法有三个:reverse反转/倒序排序.sort正序排序.sorted可以获取排序后的列表.在更高级列表排序中,后两中方法还可以加入条件参数进行排序. reverse() ...

  7. dom&bom的起源,方法,内容,应用

    Document Object Model的历史可以追溯至1990年代后期微软与Netscape的"浏览器大战"(browser wars),双方为了在JavaScript与JSc ...

  8. git内容补充-Git零基础快速入门-苏玲

    https://git-scm.com/book/zh/v2 git历史 集中式版本控制管理:cvs.svn 分布式版本控制管理:git 基本命令 git config --list --global ...

  9. JAVA中String类的方法(函数)总结--JAVA基础

    1.concat()方法,当参数为两字符串时,可实现字符串的连接: package cn.nxl123.www; public class Test { public static void main ...

随机推荐

  1. 深度学习(二)更新ing~

    监督学习是指:利用一组已知类别的样本调整分类器的参数,使其达到所要求性能的过程,也称为监督训练或有教师学习 通俗来说就是人给过一个tag再来训练. 神经网络: 三个隐藏层的一个神经网络e.g 后面又提 ...

  2. SSM项目手动分页详解

    环境:idea+mysql 首先,既然是mysql,那肯定会用到limit,用这个分页的确很方便. 第一步,编写sql语句 <select id="selectImages" ...

  3. js压缩上传图片

    初学有不当之处,请多多指点, <body> <div class="cc"> <input type="file" id=&quo ...

  4. DOM备忘录

    nodeName和nodeValue属性 对于element节点而言,nodeName是标签名,nodeValue是null:而对于textNode节点而言,nodeName是#Text,nodeVl ...

  5. JSP基础点滴

    注释:<%-- 注释 --%> JSP中一共有3种Scriptlet代码.支持与HTML的代码混编. 第一种:<%%>  定义局部变量,编写语句. 第二种:<%!%> ...

  6. python2 => python3 踩坑集合

    报错内容: ModuleNotFoundError: No module named 'md5' 解析: 这是 python2 的库,python3 已经把它包含进 hashlib 库里了 解决方法 ...

  7. windows转mac-开发环境搭建(一):需要搭建的环境及安装的工具

    作为一个java后端开发者来说,随着项目的增加,前段时间用windows真是受尽折磨,电脑卡到不行,在我们开发部技术大佬的一再安利之下,狠下心选了个17年13寸带touch bar的MacBook P ...

  8. UVA - 242 线性DP

    题意:给定多种邮票的组合,邮票最多只能用S张,这些邮票能组成许多不同面额,问最大连续面额的长度是多少,如果有多个组合输出组合中邮票数量最少的,如果仍有长度一致的,输出邮票从大到小排序后字典序最大的那个 ...

  9. kubernetes 单节点和多节点环境搭建

    kubernetes单节点环境搭建: 1.在VMWare Workstation中建立一个centos 7虚拟机.虚拟机的配置尽量调大一些 2.操作系统安装完成后,关闭centos 自带的防火墙服务 ...

  10. python模拟登录浙江大学彩云库

    前言: 群里一位朋友叫我帮他写 一个模拟登录的. 代码: import requests import time url="http://yk3.gokuai.com/web/index&q ...