二、Interface
接口只能包含抽象成员,也就是说:接口不能有字段,不能有构造函数,不能提供方法实现。接口可以定义属性
(本质上是方法)协议。struct也可以实现接口。接口实现必须实现祖先接口的所有方法。
接口命名冲突,例如IDrawToForm和IDrawToPrinter都包含Draw()方法,这时候:
Class Octagon : IDrawToForm, IDrawToPrinter
{
public void Draw(){…}
}
如果有Octagon的对象oct,那么((IDrawToForm)oct).Draw()和(( IDrawToPrinter)oct).Draw()都是调用同一个实现,这时候可以使用显式接口实现语法:
class Octagon : IDrawToForm, IDrawToPrinter
{
//注意,没有访问修饰符,因为必须是私有的
void IDrawToForm.Draw(){…}
void IDrawToPrinter.Draw(){…}
}
A. IEnumerable和IEnumerato
r
任何支持GetEnumerator()方法的或者实现IEnumerable接口类型都可以通过foreach结构进行运算。
public interface IEnumerable
{
IEnumerator GetEnumerator();
}
public interface IEnumerator
{
bool MoveNext ();
object Current { get;}
void Reset ();
}
B. ICloneable
public interface ICloneable
{
object Clone();
}
System.Object的MemberwiseClone()得到一个浅拷贝。
C. IComparable,IComparer
public interface IComparable
{
int CompareTo(object o);
}
interface IComparer
{
int Compare(object o1, object o2);
}
Array.Sort(Alist),其中Alist里的成员必须实现IComparable接口, IComparer不是在要排序的类型中实现,而是在辅助类中实现的:
public class PetNameComparer : IComparer
{
int IComparer.Compare(object o1, object o2)
{
Car t1 = (Car)o1;
Car t2 = (Car)o2;
return String.Compare(t1.PetName, t2.PetName);
}
}
static void Main(string[] args)
{
...
Array.Sort(myAutoList, new PetNameComparer());
}
三、 构造函数,static
class Motorcycle
{
public Motorcycle(string name) : this(0, name)//调用另一个构造函数
{}
}
静态构造函数
class Motorcycle
{
public static string company
//不能有访问修饰符,不能有参数,只有一个,只执行一次(在访问静态成员之前)
// 执行在任何实例构造函数之前。
static Motorcycle ()
{
company = “BMW”;
}
}
如果一个类定义成static,不能使用new创建对象,且只能包含static成员。
分享到:
相关推荐
《Learning Hard C# 学习笔记》是一份深入浅出的C#编程教程,旨在帮助初学者快速掌握C#这门强大的编程语言。C#是由微软公司开发的一种面向对象的编程语言,广泛应用于Windows平台、游戏开发(尤其是Unity引擎)、...
这组"课堂笔记"涵盖了C#的核心概念和技术,旨在帮助学习者深入理解和掌握这门语言。屏幕截图的添加可能意味着笔记中包含了实际操作的步骤和可视化教程,这对于初学者来说是非常有用的补充。 首先,让我们探讨C#的...
在"笔记C#"中,你将找到关于这些主题的详细解释和实例,包括每个概念的使用场景和最佳实践。无论你是初学者还是有一定经验的开发者,这个资料都能帮助你巩固基础,探索C#的深度,提升编程技能。希望你在学习过程中...
在C#编程中,获取笔记本电池状态信息是一个常见的任务,特别是在开发系统监控或者电源管理相关的应用时。这个任务可以通过调用Windows操作系统提供的Win32 API函数来实现。下面将详细介绍如何利用C#来获取电池状态,...
2. **面向对象编程**:讲解类、对象、继承、多态等概念,这是C#的核心特性,也是理解其强大之处的关键。 3. **Windows Forms应用**:通过创建用户界面,学习如何利用C#进行桌面应用开发。 4. **LINQ查询**:学习语言...
LearningHard C#学习笔记,学习C#的经典入门教材。 非常适合初学者,希望大家一起努力。
这份C#笔记旨在帮助初学者快速掌握C#编程基础,逐步构建对面向对象编程的理解,同时通过实践操作提升编程技能。随着学习的深入,你可以进一步探索更高级的主题,如Asynchronous Programming、Dependency Injection和...
2. **打开**:加载已存在文本文件的内容到编辑器中,这通常涉及到使用`FileStream`或`StreamReader`类来读取文件内容,并显示在界面上。 3. **保存**:将当前编辑器中的文本内容写入到磁盘文件中,使用`StreamWriter...
深度学习C#笔记深度学习C#笔记深度学习C#笔记深度学习C#笔记深度学习C#笔记
C#学习阅读笔记 本笔记总结了 C# 语言的基本概念、特点和重要知识点。C# 是一种类型安全的语言,专门用于 .NET Framework,具有强数据类型和面向对象的编程特点。下面是笔记的主要内容: 一、C# 语言概述 * C# 是...
2. **泛型**:C#的泛型允许你创建类型安全的容器,这样可以在不指定具体类型的情况下定义和使用数据结构,提高代码的灵活性和效率。 3. **委托与事件**:委托是C#中的函数指针,可以用来实现回调机制。事件则用于...
2. **Halcon的设备接口**: Halcon提供了`DevOpen`函数用于打开设备,如摄像头。在C#中,我们需要通过Halcon的.NET类库来调用这个函数。设备的标识符通常可以通过系统枚举获取,或者直接指定摄像头的设备名。 3. *...
2. **文件操作**:使用`System.IO`命名空间下的`FileStream`、`StreamReader`和`StreamWriter`类可以实现文件的读写。例如,打开文件时,我们需要先弹出文件对话框让用户选择文件,然后使用`StreamReader`读取文本;...
C#基础笔记-汇总 记录的笔记,简介 数据类型 超级长的例子 转
### C# 学习笔记 #### 标题解析 - **标题**:“C#学习笔记.docx” - 该文档主要记录了作者在学习C#过程中所做的笔记。 #### 描述解析 - **描述**:“学习时自己做的笔记,方便自己学习也分享给大家,做好笔记对于...
2. **使用Windows Media Foundation**: 在WMF中,`MediaCapture`类是核心组件,用于初始化和管理摄像头设备。通过创建`MediaCapture`实例,设置其配置,然后调用`StartPreview()`方法来启动摄像头预览。为了捕获...
标题 "C#学习资料和笔记收录工具" 涉及的核心知识点主要集中在C#编程语言的学习资源管理和笔记整理上。C#是一种面向对象的、现代的编程语言,由微软公司开发,广泛应用于Windows桌面应用、游戏开发、移动应用以及...
Visual C#学习笔记光盘 简介:本书由浅入深地讲解Visual C# 2005编程知识,全书内容分为6篇,共27章,第一篇介绍Visual Studio 2005开发环境和C#基础,其中包括Visual C# 2005简介,C#语言基础,面向对象编程...
2. **面向对象编程(OOP)**:C#是纯面向对象的语言,支持类、对象、接口、继承、封装、多态等核心OOP概念。类是对象的蓝图,可以包含字段(成员变量)和方法(成员函数)。接口定义一组方法签名,不包含实现。继承...