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 - 04 - Type Fundamentals
1. System.Object The runtime requires every type to ultimately be derived from the System.Obj ...
- 6.Type and Member Basics
1.The Different Kinds of Type Members 1.Constants:a symbol that identifies a never-changing data val ...
- CLR via C# 3rd - 05 - Primitive, Reference, and Value Types
1. Primitive Types Any data types the compiler directly supports are called primitive types. ...
- #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)宏的运行机理:1. ( (TYPE *)0 ) 将零转型为TY ...
- C语言高级用法---typeof( ((type *)0)->member )和offset_of()
前言 本文讲解typeof( ((type *)0)->member )的含义,并在此基础上学习offset_of()的用法.typeof( ((type *)0)->member ) A ...
- #define IOFFSETOF(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
#include <iostream> #define IOFFSETOF(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) usi ...
- C++:Abstract class : invalid abstract return type for member function ‘virtual...’
#include <iostream> #include <cmath> #include <sstream> using namespace std; class ...
- CLR via C# 3rd - 08 - Methods
Kinds of methods Constructors Type constructors Overload operators Type con ...
- 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 ...
随机推荐
- 学习solr
1.下载地址 http://apache.opencas.org/lucene/solr/
- 计划任务,机器码与注册码,Web服务
01.计划任务的客户端配置 TScheduleTask 辅助结构内容: TScheduleRecord<ScheduleTask.pas> TScheduleRecord.Schedule ...
- java知识巩固
1.从控制台读取一个字符: public static void main(String args[]) throws java.io.IOException{ char c=(char)System ...
- Bootstrap<基础十五> 输入框组
Bootstrap 支持的另一个特性,输入框组.输入框组扩展自 表单控件.使用输入框组,可以很容易地向基于文本的输入框添加作为前缀和后缀的文本或按钮. 通过向输入域添加前缀和后缀的内容,您可以向用户输 ...
- Bootstrap<基础六> 表单
Bootstrap 通过一些简单的 HTML 标签和扩展的类即可创建出不同样式的表单. 表单布局 Bootstrap 提供了下列类型的表单布局: 垂直表单(默认) 内联表单 水平表单 垂直或基本表单 ...
- Android中ListView的用法
使用方法1 显示简单的文本 在layout文件中像加入普通控件一样在layout文件中引入ListView <ListView android:id="@+id/list_view&q ...
- [NOI 2006] 最大获利 80分
最后两点怎么搞都要30s+,但是我不会什么优化啊…暂时就这样吧.Dinic的时间复杂度是O(N^2*M) 这题和TDL的幼儿园模板是一样的. 这次写网络流给自己计时了,大约是40min左右,后来都跑去 ...
- LLDB, iOS调试器
breakpoint set -s "" breakpoint set -M <method> ( --method <method> ) -S ...
- VS2010里, using System.Data.OracleClient; 不可用
当我试图去引用System.Data.OracleClient 这个命名空间时,VS 显示不存在 但是在对象浏览器里却可以找到这个命名空间及里边的对象 另外好像也没有区分清楚 using 和Refer ...
- spring注解 @Transactional
一.@Transactional所需要的jar包 1.aopalliance.jar 这个包是AOP联盟的API包,里面包含了针对面向切面的接口.(通常Spring等其它具备动态织入功能的框架依赖此 ...