1、结构功能特性? 实现代码?
结构用struct关键字定义的,与类类似,但有本质区别。结构实质是一个值类型,它不需要对分配的。
结构的特性:
(1)、结构作为参数传递时,是值传递。
(2)、结构的构造函数必须带参数的。
(3)、结构实例化可以不用new的。
(4)、结构不能继承,但是可以实现接口。
(5)、结构中不能初始化实例字段。
例:

using System;
using System.Collections.Generic;
using System.Text; namespace TestStruct
{
class Program
{
public struct Circle //定义一个圆
{
private const double pi = 3.1415926; public double radius; //半径 /// <summary>
/// 构造函数
/// </summary>
public Circle(double r)
{
radius = r;
}
/// <summary>
/// 面积
/// </summary>
public double CArea()
{
return 3.14 * radius * radius;
} } static void Main(string[] args)
{
Circle circle1; //不用new实例化 circle1.radius = ; Console.WriteLine("圆面积为:" + circle1.CArea()); Circle circle2 = new Circle(); //用new实例化 Console.WriteLine("圆面积为:" + circle2.CArea()); Console.ReadLine();
}
}
}
using System;
using System.Collections.Generic;
using System.Text; namespace TestStruct
{
class Program
{
public struct Circle //定义一个圆
{
private const double pi = 3.1415926; public double radius; //半径 /// <summary>
/// 构造函数
/// </summary>
public Circle(double r)
{
radius = r;
}
/// <summary>
/// 面积
/// </summary>
public double CArea()
{
return 3.14 * radius * radius;
} } static void Main(string[] args)
{
Circle circle1; //不用new实例化 circle1.radius = ; Console.WriteLine("圆面积为:" + circle1.CArea()); Circle circle2 = new Circle(); //用new实例化 Console.WriteLine("圆面积为:" + circle2.CArea()); Console.ReadLine();
}
}
}

2、什么是委托? 特点? 何时使用委托而不使用接口? 如何声明、实例化和使用委托?
 
(1)、委托是一个类,它定义了方法的类型,可以讲方法当做另一个方法的参数。避免在程序中使用分支,
 
程序扩展性更好。
例子:

class Program
{
public delegate void PrinteDelegate(string name); private static void PrinteEnglish(string name)
{
Console.WriteLine("Your Name: " + name);
} private static void PrinteChinese(string name)
{
Console.WriteLine("你的大名:" + name);
} private static void Printe(string name, PrinteDelegate MakeGreeting)
{
MakeGreeting(name);
} static void Main(string[] args)
{
Printe("Sam Young", PrinteEnglish); Printe("白杨树", PrinteChinese); Console.ReadLine();
}
}
class Program
{
public delegate void PrinteDelegate(string name); private static void PrinteEnglish(string name)
{
Console.WriteLine("Your Name: " + name);
} private static void PrinteChinese(string name)
{
Console.WriteLine("你的大名:" + name);
} private static void Printe(string name, PrinteDelegate MakeGreeting)
{
MakeGreeting(name);
} static void Main(string[] args)
{
Printe("Sam Young", PrinteEnglish); Printe("白杨树", PrinteChinese); Console.ReadLine();
}
}

(2)、委托类似于C++ 函数指针,但它是类型安全的。
 
委托允许将方法作为参数进行传递。
 
委托可用于定义回调方法。
 
委托可以链接在一起;例如,可以对一个事件调用多个方法。
 
方法不需要与委托签名精确匹配。有关更多信息,请参见协变和逆变。
 
C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。
 
使用委托,我觉得应该在需要分支调用不同方法时使用。但是例如工厂模式中,根据分支实例化不同的类
 
,这时就用接口。
 
 
委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动
 
态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩
 
展性。
 
3、什么是部分类/分部类? 哪些功能特性? 实现代码? 适用场合? 需遵循几个规则?
分部类就是将一个类用partial关键字,分成好几个独立文件,但实质还是一个类。一般当一个类行数太多或者某些功能比较独立可以用分部类,最常见就是窗体Form.cs和Form.designer.cs。
一般需遵循如下规则:
(1)、必须使用partial 关键字
 
(2)、虽然有不同的部分,但是各个部分必须具有相同的可访问性,如public、private 等
 
(3)、如果将任意部分声明为抽象的、密封的,则整个类型都被视为抽象的、密封的
 
(4)、如果任意部分声明继承基类时,则整个类型都将继承该类
 
(5)、 各个部分可以指定不同的基接口,最终类型将实现所有分部声明所列出的全部接口
 
(6)、在某一分部定义中声明的任何类、结构或接口成员可供所有其他部分使用
 
(7)、嵌套类型可以是分部的,即使它们所嵌套于的类型本身并不是分部的也如此。

C#类和结构(1)的更多相关文章

  1. C#基础回顾(二)—页面值传递、重载与重写、类与结构体、装箱与拆箱

    一.前言 -孤独的路上有梦想作伴,乘风破浪- 二.页面值传递 (1)C#各页面之间可以进行数据的交换和传递,页面之间可根据获取的数据,进行各自的操作(跳转.计算等操作).为了实现多种方式的数据传递,C ...

  2. swift学习笔记3——类、结构体、枚举

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  3. java 深入技术七(类的结构和反射)

    1.java反射(reflect) java 类的结构 java反射机制就是把java类按结构分解,每一部分对应特定的反射类 java反射机制允许运行时加载,探知和使用在编译期间完全未知的classe ...

  4. 【JavaScript】获取未知类的结构

    目录结构: // contents structure [-] 为什么需要获取类的结构 关于JavaScript中的类 定义类的方法 第一种 第二种 DEMO HTML页面 date文件 注意事项 参 ...

  5. Swift3.0P1 语法指南——类和结构体

    原档:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programmi ...

  6. 【Swift学习】Swift编程之旅---类和结构体(十三)

    与其他编程语言所不同的是,Swift 并不要求你为自定义类和结构去创建独立的接口和实现文件.你所要做的是在一个单一文件中定义一个类或者结构体,系统将会自动生成面向其它代码的外部接口. 注意:通常一个类 ...

  7. swift学习笔记之-类和结构体

    //类和结构体 import UIKit //类和结构体 /* 1.枚举enum.结构体struct和String.Array.Dictionary类型,都属于值传递类型,被赋值给新的常量或变量时传递 ...

  8. swift 类和结构体

    1:类和结构体定义 类和结构体分别通过关键字class 和struct定义. swift的编码风格是类class和结构体struct名字使用大写字母开头的匈牙利表示法,相反的.类的方法和属性则用小写字 ...

  9. Swift面向对象基础(上)——Swift中的类和结构体(上)

    学习来自<极客学院> import Foundation //1.定义类和结构体 /* [修饰符]calss 类名{ 零到多个构造器 零到多个属性 零到多个方法 零到多个下标 } 修饰符可 ...

  10. C#基础知识系列三(类和结构体、String和StringBuilder、equals和==)

    前言 这一节主要来了解一下类和结构体之间的异同点.以及针对String和StringBuilder的用法.equals和==,其实可以看出很多地方都用到了上一节的值类型和引用类型.堆栈和装箱拆箱操作吧 ...

随机推荐

  1. JavaScript Creating 对象

    可通过多种方法在 JavaScript 中创建你自己的对象.可以直接实例化Object 对象 (JavaScript),然后添加你自己的属性和方法.或者可以使用对象文本表示法来定义你的对象.还可使用构 ...

  2. __attribute__系列之介绍篇

    1.什么是__attribute__? __attribute__机制是GNU C的一大特色,它可以设置函数属性.变量属性和类型属性等.可以通过它们向编译器提供更多数据,帮助编译器执行优化等. 2._ ...

  3. ARM处理器的运行模式

    ARM处理器的7种运行模式 用户模式( usr ):ARM处理器正常的程序执行状态: 快速中断模式( fiq ):用于高速数据传输或通道处理: 外部中断模式( irq):用于通常的中断处理: 管理模式 ...

  4. [转]MVC设计模式

    MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller). MVC模式最 ...

  5. flume 中的 hdfs sink round 和roll

    http://blog.csdn.net/kntao/article/details/49278239 http://flume.apache.org/FlumeUserGuide.html#exec ...

  6. redis主从备份

    redis主从备份,默认是读写分离的,master用于写,slave用于读.slave的写只能用于存储一些短暂状态的变量,应为在下次同步时,会被移除. 配置主从备份原则:配从不配主,既只需修改从库配置 ...

  7. PHP下载远程文件的3种方法以及性能考虑

    今天在做导出Excel的时候,总是要测试导出的Excel文件,频繁的下载和打开,很麻烦 就想着写段代码一气呵成  服务端导出Excel==>下载Excel文件到本地==>并打开的操作. 这 ...

  8. bootstrap-table接合knockout.js

    function responseHandler(data) { if (data.ErrorNo > 0) { return; } var count = data.Data.TotalRow ...

  9. plsql programming 20 管理PL/SQL代码(个人感觉用不到)

    这一章的内容, 只完成了一部分, 剩下的用到再补充吧 由于依赖关系, 而编译失败, 需要重新编译. ( 所谓依赖, 是指存储过程, 函数等在运行中调用的对象, 比如table 等, 比如你删除了过程中 ...

  10. tomcat本身的lib目录都有哪些jar包

    1.tomcat下的lib目录,自己带有的jar包有:servlet.jar,tomcat-jdbc.jar,tomncat-dbcp.jar,jsp.jar等 2.tomcat下的lib目录,自己带 ...