C#程序设计基础 $3 成员、变量和常量.

Slides:



Advertisements
Similar presentations
第 12 章 命 名 空 间 (时间: 1 次课, 2 学时)
Advertisements

单元二:面向对象程序设计 任务二:借书卡程序设计.
第三讲 面向对象(上).
项目7 面向对象高级.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
四資二甲 第三週作業 物件導向程式設計.
第7章 C#函數與.NET Framework類別函數庫
设计模式可以帮助我们改善系统的设计,增强 系统的健壮性、可扩展性,为以后铺平道路。
C#程序设计 10软件1、2班 王槐彬 计算机工程学院.
第4章 数组 数组是由一定数目的同类元素顺序排列而成的结构类型数据 一个数组在内存占有一片连续的存储区域 数组名是存储空间的首地址
類別與物件 Class & Object.
C#程序设计 c# programming 泛型 C#程序设计课程组.
.NET 程式設計入門(使用 C#) 講師:鄧智鴻.
第二章 C# 基础知识.
第四章 在 C# 中实现 OOP 概念.
程序與函數的類別方法 目的:模組化程式設計 方法:由上而下設計 注意事項:(1)獨立性 (2)結合問題 (3)子問題間的溝通.
第三章 C#面向对象初级编程 面向对象得程序设计越来越受到编程人员的喜爱。类和对象是面向对象程序设计中的重要概念。封装性、继承性和多态性是面向对象的特点,本章旨在全面说明C#编写面向对象程序设计的方法。
程式設計實作.
C++ with Managed Extensions
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
C#程序设计基础 $3 成员、变量和常量.
程序设计期末复习 黎金宁
2 C++ 的基本語法和使用環境 親自撰寫和執行程式是學好程式語言的不二法門。本章藉由兩個簡單的程式,介紹C++ 程式的基本結構和開發環境,讓初學者能逐漸建立使用C++ 的信心。
第9章 多线程 王德俊 上海交通大学继续教育学院.
第4章 数组和集合 4.1 一维数组 4.2 二维数组 4.3 Array类 4.4 交错数组 4.5 ArrayList类
第6章 基本的IDL到C++的映射 3.2 简介 从IDL到C++的映射必须具备下面的条件 (1) 映射应该很直观,并且很容易使用
C#面向对象程序设计 $7 继承和多态性.
第6章 继承和接口设计 6.1 继 承 6.2 多态性 6.3 抽象类 6.4 接口 6.5 接口在集合排序中的应用.
$16 进程和线程. $16 进程和线程 进程 进程 属性 ProcessName / Id MachineName / MainModule BasePriority StartTime / ExitTime TotalProcessorTime / UserProcessorTime PrivateMemorySize64.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
Java程序设计 第2章 基本数据类型及操作.
Ch02-基礎語法.
C/C++/Java 哪些值不是头等程序对象
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
$10 可空类型.
C#程序设计基础 第二章 数据类型.
類別與物件 I (Classes and Objects I)
第三章 C# 基础知识.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
劉崇汎 崑山科技大學 電腦與通訊系 DLL的建立與引用 劉崇汎 崑山科技大學 電腦與通訊系
补充:c#语言基础.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第三章 控制语句 第十一组 C++语言程序设计.
C++复习2----类与对象.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
第四章 类 4.1 基础知识 4.2 构造函数 4.3 方法 4.4 属性与索引 4.5 String类
C++语言程序设计教程 第2章 数据类型与表达式 第2章 数据类型与表达式 制作人:杨进才 沈显君.
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第二章 Java语法基础.
C++语言程序设计 C++语言程序设计 第十章 多态 第十一组 C++语言程序设计.
Review 1~3.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第十章 多态 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
第6單元 6-1 類別的繼承 (Class Inheritance) 6-2 抽象類別 (Abstract Class)
JAVA 程式設計與資料結構 第三章 物件的設計.
第2章 Java语言基础.
對於成員(member)存取權的限制 成員的資料被毫無限制的存取,任誰都可以指定任意值給成員,Java語言為了防止這種現象的產生,規定:有一種成員的資料不能任由類別外部的任何人隨意存取。
05 方法. 05 方法 5.1 方法 在一個較大型的程式中,通常會將具有特定功能或經常重複使用的程式,撰寫成獨立的小單元,稱為「方法」(Method),並賦予方法一個名稱,當程式需要時就可以呼叫此方法來執行該段特定程式。(此種重複使用的程式小單元在其他語言中可能稱為程序、副程式或函式, Visual.
C++语言程序设计 C++语言程序设计 第十一章 异常处理 C++语言程序设计.
C++程序语言设计 Chapter 14: Templates.
第二章 Java基础语法 北京传智播客教育
Summary
Presentation transcript:

C#程序设计基础 $3 成员、变量和常量

3.2 成员访问限制 访问限制修饰符 私有private P57 限制为私有的,访问仅限于包含类型。 用于修饰类或结构的成员 3.2 成员访问限制 访问限制修饰符 私有private P57 限制为私有的,访问仅限于包含类型。 用于修饰类或结构的成员 类和结构成员默认为private修饰符。 在命名空间下直接定义的类型(类、结构、接口、枚举、委托等),不允许使用private修饰符。

访问限制修饰符 公有public 表示公有访问,访问不受限制。 可用于类和结构的成员。 可以用于命名空间下直接定义的类型(类、结构等) 接口(interface)和枚举(enum)成员默认为public访问修饰符,且不能显示使用修饰符。

访问限制修饰符 保护protected P58 限制为保护访问。 只能用于类的成员 不能用于结构成员和命名空间下直接定义的类型。 在其所在类和它的派生类中的成员可以访问,而无法从类的外面访问。

访问限制修饰符 内部internal 限制为内部访问,即本程序集内可以自由访问。 可修饰类和结构的成员,也可以用于命名空间下直接定义的类型。 类(Class)的默认访问为internal。

访问限制修饰符 protected internal 同一程序集中的任何代码或其他程序集中的任何派生类都可以访问该类型或成员。 唯一的组合限制修饰符

类型默认访问表 类型 默认的成员可访问性 该成员允许的声明的可访问性 enum public 无 interface class private public、protected、internal、private、protected internal struct public、internal、private

静态成员和非静态成员 静态成员 成员属于类型本身所有,不会随具体对象的变化而变化,无论类有多少个对象,一个静态成员在内存中只有一个副本。 使用static来定义 通过类型名调用 非静态成员 属于类型的实例所有 不加static关键字 通过实例名调用

静态成员和非静态成员示例 //程序清单P3_5.cs: using System; namespace P3_5 { class StaticFieldSample public static void Main() BankCard card1 = new BankCard(); card1.m_id = "001"; card1.Query(); CreditCard card2 = new CreditCard(); card2.m_id = "002"; card2.Query(); //修改静态字段 BankCard.Currency = "港币"; } public class BankCard { public static string Currency = "人民币"; //静态字段 public string m_id; protected uint m_amount = 10; public void Query() Console.WriteLine("卡号{0}: 余额{1}{2}", m_id, m_amount, Currency); } public class CreditCard : BankCard

变量 基本原则 先定义后使用! 变量命名 使用camel规则 必须以字母开头 只能由字母、数字、下划线3种字符组成

变量种类 静态变量 实例变量 数组元素 数值参数 引用参数 输出参数 局部变量 从创建类或结构的第一个实例开始存在,由所有实例共享,直到所有实例从内存中清除。 实例变量 类或结构的非静态字段,每创建一个类或结构的实例,就会为每一个非静态的字段创建一个实例变量。 数组元素 类似于数组的实例变量,随着数组实例变量的存在而存在。 数值参数 以值传递方式传递给方法的参数。 引用参数 用关键字ref声明的、以引用传递方式传递给方法的参数。 输出参数 用关键字out声明的、以引用传递方式传递给方法的参数。 局部变量 指在一个独立的程序块中声明的变量,它只在该范围内有效。

变量初始化 静态变量 数组 数值参数和引用参数 输出参数 局部变量 可以在类或结构的定义中给字段初始化一个默认值,也可以在创建类或结构的实例时为字段赋值。否则编译器会自动为字段赋默认值。 数组 在声明时对各元素初始化,否则为默认值。 数值参数和引用参数 由实参所在的变量完成 输出参数 在方法的执行代码中完成对参数的赋值 局部变量 如果不进行初始化,变量不会获得类型的默认值,因此使用前必须进行赋值。

变量示例 //程序清单P3_6.cs: using System; namespace P3_6 { class VariableInitiationSample static void Main() double x; double sum; CzMath.Output(out sum, 1, 2.5, 5); //错误:x尚未初始化 //CzMath.Output(out sum, 2, 2.25, x); x = sum; CzMath.Output(out sum, 6.25, 12.5, x); } class CzMath //交换两个数的值 public static void Swap(ref double x, ref double y) double temp = x; x = y; y = temp; //排序输出三个数并求和 public static void Output(out double sum, params double[] array) { sum = 0; if (array.Length != 3) return; sum = array[0] + array[1] + array[2]; if (array[0] < array[1]) Swap(ref array[0], ref array[1]); if (array[1] < array[2]) Swap(ref array[1], ref array[2]); Console.WriteLine("{0} {1} {2}", array[0], array[1], array[2]); Console.WriteLine(sum); }

常量 常数常量 只读常量 用关键字const定义 定义时必须赋值,编译时字段的值就确定 每一个实例共享这个常量,类似静态变量 不允许再用关键字static修饰 只读常量 用关键字readonly定义 可在定义时赋值,也可以类或结构的构造函数中初始化 只读常量的值在程序运行中首次使用时才确定。 只读常可以是静态的,也可以是非静态的,取决于是否使用static关键字

常量示例 //程序清单P3_7.cs: using System; namespace P3_7 { class ConstVariableSample static void Main() Console.WriteLine("Pi = " + CzMath.Pi); CzMath c1 = new CzMath(); Console.WriteLine("c1: x={0} y={1}", c1.x, CzMath.y); CzMath c2 = new CzMath(); Console.WriteLine("c2: x={0} y={1}", c2.x, CzMath.y); } class CzMath { private const double Zero = 0; public const double Pi = 3.14159; public readonly int x; public static readonly int y; private static readonly Random rand = new Random(); static CzMath() y = rand.Next(System.DateTime.Now.Millisecond); } public CzMath() x = rand.Next(y);