1. Different Kinds  of Type Members

 
     A type can define zero or more of the following kinds of members:
 
     Constants
          A constant is a symbol that identifies a never-changing data value
 
     Fields
          A field represents a read-only or read/write data value
 
     Instance constructors
          An instance constructor is a special method used to initialize a new object’s instance fields to a good initial state
 
     Type constructors
          A type constructor is a special method used to initialize a type’s static fields to a good initial state
 
     Methods
          A method is a function that performs operations that change or query the state of a type (static method) or an object (instance method)
 
     Operator overloads
          An operator overload is a method that defines how an object should be manipulated when certain operators are applied to the object
 
     Conversion operators
          A conversion operator is a method that defines how to implicitly or explicitly cast or convert an object from one type to another type
 
     Properties
          A property is a mechanism that allows a simple, field-like syntax for setting or querying part of the logical state of a type (static property) or object (instance property) while ensuring that the state doesn’t become corrupt. Properties can be parameterless (very common) or parameterful (fairly uncommon but used frequently with collection classes)
 
     Events
          A static event is a mechanism that allows a type to send a notification to one or more static or instance methods
 
     Types
          A type can define other types nested within it
 
2. Type Visiblity
 
     You can specify the type’s visibility as being either public or internal
 
     A public type is visible to all code within the defining assembly as well as all code written in other assemblies. 
 
     An internal type is visible to all code within the defining assembly, and the type is not visible to code written in other assemblies. 
 
     If you do not explicitly specify either of these when you define a type, the C# compiler sets the type’s visibility to internal (the more restrictive of the two).
 
     e.g
using System;
// The type below has public visibility and can be accessed by code
// in this assembly as well as code written in other assemblies.
public class ThisIsAPublicType { ... }
 
// The type below has internal visibility and can be accessed by code
// in this assembly only.
internal class ThisIsAnInternalType { ... }
 
// The type below is internal because public/internal
// was not explicitly stated
class ThisIsAlsoAnInternalType { ... }
 
3. Friend Assemlbies
 
     When an assembly is built, it can indicate other assemblies it considers “friends” by using the InternalsVisibleTo attribute defined in the System.Runtime.CompilerServices namespace. The attribute has a string parameter that identifies the friend assembly’s name and public key (the string you pass to the attribute must not include a version, culture, or processor architecture). 
Note that friend assemblies can access all of an assembly’s internal types as well as these type’s internal members.
 
4. Member Accessiblity
 
    
5. Static classes
     
     The compiler enforces many restrictions on a static class:
     .. The class must be derived directly from System.Object because deriving from any other base class makes no sense since inheritance applies only to objects, and you cannot create an instance of a static class.
     .. The class must not implement any interfaces since interface methods are callable only when using an instance of a class.
     .. The class must define only static members (fields, methods, properties, and events). Any instance members cause the compiler to generate an error. 
     .. The class cannot be used as a field, method parameter, or local variable because all of these would indicate a variable that refers to an instance, and this is not allowed. If the compiler detects any of these uses, the compiler issues an error.
 
6. Partial Classes, Structures, and Interfaces
 
     The partial keyword tells the C# compiler that the source code for a single class, structure, or interface definition may span one or more source code files. There are three main reasons why you might want to split the source code for a type across multiple files: 
     .. Source control
 
     .. Splitting a class or structure into distinct logical units within a single file
 
     .. Code spitters
 
     The partial keyword is applied to the types in all files. When the files are compiled together, the compiler combines the code to produce one type that is in the resulting .exe or .dll assembly file (or .netmodule module file).
 
7. Components, Polymorphism, and Versioning
 
     Component Software Programming (CSP)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

CLR via C# 3rd - 06 - Type and Member Basics的更多相关文章

  1. CLR via C# 3rd - 04 - Type Fundamentals

    1. System.Object        The runtime requires every type to ultimately be derived from the System.Obj ...

  2. 6.Type and Member Basics

    1.The Different Kinds of Type Members 1.Constants:a symbol that identifies a never-changing data val ...

  3. CLR via C# 3rd - 05 - Primitive, Reference, and Value Types

    1. Primitive Types        Any data types the compiler directly supports are called primitive types. ...

  4. #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)

    #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)宏的运行机理:1. ( (TYPE *)0 ) 将零转型为TY ...

  5. C语言高级用法---typeof( ((type *)0)->member )和offset_of()

    前言 本文讲解typeof( ((type *)0)->member )的含义,并在此基础上学习offset_of()的用法.typeof( ((type *)0)->member ) A ...

  6. #define IOFFSETOF(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)

    #include <iostream> #define IOFFSETOF(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) usi ...

  7. C++:Abstract class : invalid abstract return type for member function ‘virtual...’

    #include <iostream> #include <cmath> #include <sstream> using namespace std; class ...

  8. CLR via C# 3rd - 08 - Methods

       Kinds of methods        Constructors      Type constructors      Overload operators      Type con ...

  9. CLR via C# 3rd - 07 - Constants and Fields

    1. Constants        A constant is a symbol that has a never-changing value. When defining a constant ...

随机推荐

  1. Linux安装node

    以Ubuntu为例 1.apt-get update 2.apt-get install python gcc make g++ 3.wget https://nodejs.org/dist/v4.3 ...

  2. share登录Samba可读可写(适合虚拟机下学习使用)

    直接配置 smb.conf ( path = /etc/samba/smb.conf ). 首先,进入到 samba 文件夹: cd /etc/samba/ 备份 smb.conf: mv smb.c ...

  3. Codeforces Round #313 (Div. 1)

    官方英文题解:http://codeforces.com/blog/entry/19237 Problem A: 题目大意: 给出内角和均为120°的六边形的六条边长(均为正整数),求最多能划分成多少 ...

  4. 使用VMware Workstation 12.5.2新建虚拟机

    关于VMware版本:VMware10可以支持32位和64位操作系统,VMware11及以上版本只能支持64位Win7及以上版本的操作系统!同时,VMware Workstation 10.0正式版发 ...

  5. XP 安装不了framework 4.0 的解决方法

    第一步: 如果是XP系统: 1.开始——运行——输入cmd——回车——在打开的窗口中输入net stop WuAuServ 2.开始——运行——输入%windir% 3.在打开的窗口中有个文件夹叫So ...

  6. Qt中2D绘图问题总结(一)----------基本的绘制与填充

    刚刚开始学习Qt不久,才开始渐渐地熟悉基础内容,学习过程中的一些知识的总结和感悟希望通过博客记录下来,与大家分享学习的同时,也是对自己坚持下去的鞭策,废话不多说了,开始第一次的小总结吧. Qt提供了强 ...

  7. 利用HttpURLConnection发送请求

    HttpURLConnection: 每个 HttpURLConnection实例都可用于生成单个请求,但是其他实例可以透明地共享连接到 HTTP 服务器的基础网络.请求后在 HttpURLConne ...

  8. Javascript DOM编程艺术 2宿主对象

    区别于Javascript脚本里的预先定义好的对象,宿主对象不是由Javascript语言本身提供的(内建对象)和用户自定义对象,它是由Javascript的运行环境(如web浏览器)提供的.这种We ...

  9. 关于CSS三列Float布局任务

    任务目标 掌握HTML/CSS布局的概念 掌握盒模型的概念 掌握position与float的概念以及在布局时的用法 任务描述 使用 HTML 与 CSS 按照示意图;实现三栏式布局. 左右两栏宽度固 ...

  10. pdf2swf , xpdf 部分用法

    http://hi.baidu.com/abpsoft/item/1d1eb0f50c9d1fd86225d2c0 pdf2swf详细参数使用说明 官方地址:http://www.swftools.o ...