C# Programming Study #1
- 引用的时候需要在参数和使用的时候加上 ref 关键字
static bool addnum (ref int val) //引用
{
++val;
return true;
}参数数组的概念,可以接受该类型的数组,不限制大小,关键字 params
static int getlength (params int[] vals) //参数数组
{
int sum = 0;
foreach (int val in vals)
{
sum += val;
}
return sum;
}输出参数的概念,类似参数数组,不过声明的时候可以不初始化
static int MaxValue (int[] intArray, out int maxIndex) //输出参数
{
int maxValue = intArray[0];
maxIndex = 0;
for (int i = 1; i < intArray.Length; ++i)
{
if (intArray[i] > maxValue)
{
maxValue = intArray[i];
maxIndex = i;
}
}
return maxValue;
}- 委托 delegate : 委托的声明类似函数,但不带函数体,并且要使用 delegate 关键字。委托的声明指定了一个 返回类型 和一个 参数列表
delegate double ProcessDelegate (double param1, double param2); static double Multiply (double param1, double param2)
{
return param1 * param2;
} static double Divide (double param1, double param2)
{
return param1 / param2;
} static void Main(string[] args)
{
ProcessDelegate process;
string input = Console.ReadLine();
if (input.CompareTo("M") == 0)
{
process = new ProcessDelegate (Multiply);
}
else
{
process = new ProcessDelegate(Divide);
}
double param1 = 3.123;
double param2 = 23.12;
Console.WriteLine("{0}", process(param1, param2));
}- 指定类是抽象的 abstract,不能实例化,只能继承,可以有抽象成员
abstract class MyClass1
{ }- 指定类是密封的 sealed, 不能继承
sealed class MyClass2
{ }- 成员定义
- public 成员可以由任何代码访问
- private 成员由类中的代码访问
- internal 成员只能由定义它的程序集内部的代码访问
- protected 成员只能由类或派生类中的代码访问
- 定义方法
- virtual 方法可以重写
- abstract 方法必须在非抽象类的派生类中重写
- override 方法重写了一个基类方法
- extern 方法定义放在其他地方
- 接口实现
- 不允许使用访问修饰符(public, private, protected, internal)
- 接口成员不能包含代码体
- 接口不能定义字段成员
- 接口成员不能使用关键字 static, virtual, abstractm sealed
- 类型定义成员是禁止的
public interface IMyInterface //在类中实现接口
{
void DoSomething();
void DoSomethingElse();
} public class MyClass : IMyInterface
{
public void DoSomething()
{ }
public void DosomethingElse()
{ }
}
- 泛型
- 可空类型
- int? 是 System.Nullble <int>的缩
int? op = 5;
int? result1 = (int)op * 2; //method 1
int? result2 = op.Value * 2; //method 2 int? op1 = null;
int? op2 = 5;
int? result3 = op1 * op2;
- ?? 运算符
op1 ?? op2
op1 == null ? op2 : op1
- 可空类型
- 泛型类 List
-
class Program
{
static void Main(string[] args)
{
List<Animal> animalCollection = new List<Animal>();
animalCollection.Add(new Cow("Tom"));
animalCollection.Add(new Dog("Dave")); foreach (Animal myAnimal in animalCollection)
{
Console.WriteLine(myAnimal.GetName());
}
}
}
-
- 属性的访问器
- 包含与获取(读取或计算)或设置(写)属性有关的可执行语句。访问器声明可以包含 get 访问器或 set 访问器,或者两者均包含。
- get {}
- get 访问器体与方法体相似。它必须返回属性类型的值。执行 get 访问器相当于读取字段的值。以下是返回私有字段 name 的值的 get 访问器:
-
private string name; // the name field
public string Name // the Name property
{
get
{
return name;
}
} - 当引用属性时,除非该属性为赋值目标,否则将调用 get 访问器读取该属性的值。例如:
Employee e1 = new Employee(); ... Console.Write(e1.Name);
// The get accessor is invoked here get 访问器必须在 return 或 throw 语句中终止,并且控制不能超出访问器体。
- set {}
- set 访问器与返回 void 的方法类似。它使用称为 value 的隐式参数,此参数的类型是属性的类型。在下例中,set 访问器被添加到 Name 属性:
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}- 当对属性赋值时,用提供新值的参数调用 set 访问器。例如:
e1.Name = "Joe";
// The set accessor is invoked here 在 set 访问器中对局部变量声明使用隐式参数名 (value) 是错误的。
// property_hiding.cs
// Property hiding
using System;
public class BaseClass
{
private string name;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
} public class DerivedClass : BaseClass
{
private string name;
public new string Name // Notice the use of the new modifier
{
get
{
return name;
}
set
{
name = value;
}
}
} public class MainClass
{
public static void Main()
{
DerivedClass d1 = new DerivedClass();
d1.Name = "John"; // Derived class property
Console.WriteLine("Name in the derived class is: {0}",d1.Name);
((BaseClass)d1).Name = "Mary"; // Base class property
Console.WriteLine("Name in the base class is: {0}",
((BaseClass)d1).Name);
}
}Example Code
- get {}
- #region DisaplayName
- #endregion
- 用来注释中间代码 的作用 而且在其他地方用到中间的类和方法 都会有你标注的注释
- 本身不参与编译 还可以缩进代码 方便阅览折叠代码
-
// preprocessor_region.cs
#region MyClass definition
public class MyClass
{
public static void Main()
{
}
}
#endregion
-
C# Programming Study #1的更多相关文章
- C# Programming Study #2
readonly (C# Reference) readonly 关键字是可以在字段上使用的修饰符. 当字段声明包括 readonly 修饰符时,该声明引入的字段赋值只能作为声明的一部分出现,或者 ...
- Linux: bash script
content [toc] bash scripts equivalent bash command to rename a bash variable/command alias fire='fir ...
- 随机生成&部门匹配
整体概况 1.完整程序概况 (1)程序整体构架 (2)生成程序模型 (3)匹配算法模型 (4)生成结果评估 (5)命名规范 (6)先期和后期分工 2.心路历程与对全新的java认识(心得体会篇) (1 ...
- Beginning Scala study note(4) Functional Programming in Scala
1. Functional programming treats computation as the evaluation of mathematical and avoids state and ...
- study notes: high performance linux server programming
1:linux网络API分为:socker地址API,socker基础API,网络信息API 1,socker地址API:包含IP地址和端口(ip, port).表示TCP通信的一端. 2,socke ...
- Programming Learning - Based on Project
Today when taking a bath I got a good idea that it is an efficient and interesting way to learn a ne ...
- Dynamic Programming
We began our study of algorithmic techniques with greedy algorithms, which in some sense form the mo ...
- Case Study: Random Number Generation(翻译教材)
很荣幸,经过三天的努力.终于把自己翻译的教材做完了,现在把它贴出来,希望能指出其中的不足. Case Study: Random Number Generation Fig. 6.7 C++ 标 ...
- PHP Laravel框架入门心得 | How to study PHP Laravel Framework
PHP有不少开发框架,其中比较出名的有Symfony和Laravel. 我说说我最近入门Laravel的感受和学习方法吧. 1.第一个感受是Laravel的社区讨论和学习资源真的是太棒了,中文化也做得 ...
随机推荐
- 有道翻译API
轻奢侈品_百度百科 轻奢侈品 有道翻译API 有道翻译API申请成功 API key:72763558 keyfrom:lexus-studio
- php在apache中运行模式
php在apache中运行模式 (2011-12-18 02:38:27) 标签: 杂谈 分类: 服务器及软件 一.php在php在三种工作方式:Apache 模块DLL) 以下分别比较: 1. ph ...
- 纯代码 自己主动屏幕适配iPhone button
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2h1bmdlc2hpaHVhdGlhbg==/font/5a6L5L2T/fontsize/400/fil ...
- js表格排序 & 去除字符串空格
// a:列数 bool:排序升序判断参数 true false Str:支持多列 function newUnitSort(a, bool, str) { var oTable = document ...
- HTML+CSS笔记 CSS中级 缩写入门
盒子模型代码简写 回忆盒模型时外边距(margin).内边距(padding)和边框(border)设置上下左右四个方向的边距是按照顺时针方向设置的:上右下左. 语法: margin:10px 15p ...
- Dokcer 组成原理简介
首先来张图了解Docker的组成 重要 Docker在启动容器的时候,需要创建文件系统,为rootfs提供挂载点.最初Docker仅能在支持Aufs文件系统的Linux发行版上运行,但是由于Aufs未 ...
- IOS 定位服务与地图的应用开发
1.定位服务 现在的移动设备很多都提供定位服务,IOS设备提供3种不同定位途径: (1)WiFi定位,通过查询一个WiFi路由器的地理位置的信息,比较省电:IPhone,IPod touch和IPad ...
- Bootstrap dropdown 使用
同样是2种方式 参考http://www.bootcss.com/javascript.html#dropdowns JS方式调用 http://www.w3resource.com/twitter- ...
- $.ajax和vue-resource实现OAuth
Vue.js——使用$.ajax和vue-resource实现OAuth的注册.登录.注销和API调用 概述 上一篇我们介绍了如何使用vue resource处理HTTP请求,结合服务端的REST A ...
- 哈夫曼树(Huffman)的JS实现
我本身并不懂哈夫曼树也不知道有什么用,GOOGLE了下,也只是一知半解,只是刚好看到有JAVA实现版,又看了下生成原理,感觉挺有意思,就写了一下 有些地方可以优化,效率不怎么样的,纯好玩,也不保证一定 ...