一、分部类

  什么是部分类呢?简单来说就是将一个类型或方法拆分到两个或多个源文件中,每个源文件只包含类型定义的一部分。

  当使用自动生成的源时,无须重新创建源文件便可将代码添加到类中。Visual Studio在创建Window窗体,Web服务包装代码时都是使用此方法。

1、分部类的特征

  • 类的定义前要加partial。
  • 分部类可以定义在两个不同的.cs文件,也可以定义在同一个.cs文件中。
  • 分部类必须同属一个命名空间。

代码示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace AllDemo
{
class Program
{
static void Main(string[] args)
{
Person p = new Person(,"关羽",);
p.SaySomeThing(); Console.ReadKey();
}
} public partial class Person
{
public Person(int id, string name, int age)
{
Id = id;
Name = name;
Age = age;
} public int Id { get; set; } public string Name {get; set; }
} public partial class Person
{
public int Age { get; set; } public void SaySomeThing()
{
Console.WriteLine("我的名字叫" + Name +",我今年" + Age + "岁");
}
}
}

分部类虽然定义在不同的位置,但是编译器会将它们合并为一,就像它们原本就没有分开过。

二、分部方法

  分部方法的声明由两个部分组成:定义和实现。分部方法包含在分部类或分部结构中。分部方法的签名和它的可选实现可以位于同一个或两个不同的分部累中。如果未提供分部方法的实现,则编译器将自动移除方法签名,以及移除所有其他地方代码对该方法的调用。

分部方法的严格限制

  1. 声明必须以上下文关键字partial开头
  2. 声明不能有访问修饰符,因此是隐式私有的。
  3. 不能有返回值。
  4. 可以有ref参数,不能有out参数。
  5. 分部方法可以使用static和unsafe修饰符
  6. 参数名称在实现声明和定义声明中虽然可以不同,但仍然推荐使用一直的方法签名。

示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace AllDemo
{
class Program
{
static void Main(string[] args)
{
Person p = new Person();
p.Say(); //输出 你好 Console.ReadKey();
}
} public partial class Person
{
//必须定义在分部类
partial void Say1(); //方法签名 partial void Say1()
{
Console.WriteLine("你好");
} //因为不能具有修饰符,因此是隐式私有的,只能在内部调用
public void Say()
{
Say1();
}
}
}

分部类,分部方法 - 修饰符partial的更多相关文章

  1. .NET C#基础(2):方法修饰符 - 给方法叠buff

    0. 文章目的   本文面向有一定.NET C#基础知识的学习者,介绍C#中的方法修饰符的含义和使用以及注意事项.   1. 阅读基础   理解C#基本语法(如方法声明)   理解OOP基本概念(如多 ...

  2. java中的类修饰符、成员变量修饰符、方法修饰符。

    类修饰符: public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类. abstract,将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现. fin ...

  3. Java进阶(四十)Java类、变量、方法修饰符讲解

    Java进阶(四十)Java类.变量.方法修饰符讲解 Java类修饰符 abstract: 将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现. final: 将一个类生命为最终(即非继承类) ...

  4. Java 类、属性、方法修饰符 public、private、protected、default

    Java 中修饰类修饰符:public .default (默认) Java 中修饰类中属性.方法修饰符:public.private.protected.default (默认) 通过 IDEA 创 ...

  5. iOS 方法修饰符

     一.NS_DESIGNATED_INITIALIZER 用来修饰init方法,被修饰的方法称为designated initializer:没有被这个修饰的init方法称为convenience i ...

  6. java中的方法重载与重写以及方法修饰符

    1. 方法重载Overloading , 是在一个类中,有多个方法,这些方法的名字相同,但是具有不同的参数列表,和返回值 重载的时候,方法名要一样,但是参数类型和参数个数不一样,返回值类型可以相同,也 ...

  7. java中的类修饰符、成员变量修饰符、方法修饰符

    类修饰符:  public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类. abstract,将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现. fi ...

  8. 实现继承+接口继承+虚方法+隐藏方法+this/base+抽象类+密封类/方法+修饰符

    概念: 在上一节课中学习了如何定义类,用类当做模板来声明我们的数据. 很多类中有相似的数据,比如在一个游戏中,有Boss类,小怪类Enemy,这些类他们有很多相同的属性,也有不同的,这个时候我们可以使 ...

  9. 【Unity|C#】基础篇(5)——分部类与分部函数(partial)

    [学习资料] <C#图解教程>(第6章):https://www.cnblogs.com/moonache/p/7687551.html 电子书下载:https://pan.baidu.c ...

随机推荐

  1. python模块:json

    r"""JSON (JavaScript Object Notation) <http://json.org> is a subset of JavaScri ...

  2. ota升级动画背景色修改

    https://wenku.baidu.com/view/0d63ad25192e45361066f549.html https://blog.csdn.net/huangyabin001/artic ...

  3. 【慕课网实战】Spark Streaming实时流处理项目实战笔记十三之铭文升级版

    铭文一级: 第10章 Spark Streaming整合Kafka spark-submit \--class com.imooc.spark.KafkaReceiverWordCount \--ma ...

  4. toast

     start (e){          wx.showToast({         title: '轮播图',         icon: 'success',         duration: ...

  5. 轮播图js编写

    //面向对象 function Left() { this.index = 0; this.lefthover = $('#left-content'); this.listenhover(); th ...

  6. 利用Go2Shell 实现 Mac Finder 直接shell端打开当前文件夹

    Finder 窗口 ,点击下图所示的按钮(红色框内),即可打开Shell Terminal. 打开后,如图 用法 安装go2shell后,打开finder的application文件夹,找到go2sh ...

  7. WeexSDK之注册Handlers

    先看代码: + (void)_registerDefaultHandlers { [self registerHandler:[WXResourceRequestHandlerDefaultImpl ...

  8. WPF触发器(Trigger) - DataTrigger

    官方文档中对DataTrigger的介绍 Represents a trigger that applies property values or performs actions when the ...

  9. 用jQuery修改右键菜单

    概述 以前在网上找过屏蔽右键菜单的代码,也找过屏蔽F12的代码,今天无意之中看到别人的右键菜单很有意思,我也想来搞一个. 思路 建立一个菜单并且隐藏起来. 用window.oncontextmenu屏 ...

  10. Java学习笔记44(多线程一:Thread类)

    多线程的概念:略 多线程的目的:提高效率 主线程: package demo; //主线程 public class Demo { public static void main(String[] a ...