您的位置:首页 > 编程语言 > C#

C#简单总结

2015-07-20 15:29 633 查看
C#具有的一些特殊功能:

(1)

C# 一些重要的功能:

布尔条件(Boolean Conditions)

自动垃圾回收(Automatic Garbage Collection)

标准库(Standard Library)

组件版本(Assembly Versioning)

属性(Properties)和事件(Events)

委托(Delegates)和事件管理(Events Management)

易于使用的泛型(Generics)

索引器(Indexers)

条件编译(Conditional Compilation)

简单的多线程(Multithreading)

LINQ 和 Lambda 表达式

集成 Windows

(2)WriteLine 是一个定义在 System 命名空间中的 Console 类的一个方法。

与Write的区别主要在于上一个带有自动换行,第二个不带有自动换行。

(3) Console.ReadKey(); 是针对 VS.NET 用户的。这使得程序会等待一个按键的动作,防止程序从 Visual Studio .NET 启动时屏幕会快速运行并关闭。

(4)文件的名称可以与类的名称不同

(5)using 关键字用于在程序中包含命名空间。一个程序可以包含多个 using 语句。

(6)获取类型的字节数可以使用sizeof获取

(7)引用类型

简单的说就是这个变量不会指出这个存储在变量中的实际数据,它们只是包含对变量的引用。

它们指的是一个内存位置。使用多个变量时,引用类型可以指向一个内存位置。如果内存位置的数据是由一个变量改变的,其他变量会自动反映这种值的变化。内置的 引用类型有:object、dynamic 和 string。

(8)

对象(Object)类型 是 C# 通用类型系统(Common Type System - CTS)中所有数据类型的终极基类。Object 是 System.Object 类的别名。所以对象(Object)类型可以被分配任何其他类型(值类型、引用类型、预定义类型或用户自定义类型)的值。但是,在分配值之前,需要先进行类型转换。

(9)动态类型的使用和对象类型的使用相似,只不过动态类型在编译的过程中,才会进行类型检查。

(10)程序接受用户的输入,使用的是console;类中的一个函数ReadLine()函数,该函数只会接受字符串格式的数据。所以在使用的时候需要使用一些特定的函数方法进行转换。

(11)使用关键字const声明常量,

(12)程序的封装

在类中默认的都是public类型的

public类型的,在程序的任何地方通过对象都可以访问。

private类型的,只能在自己所在类中的对象或者是成员函数可以访问,其余的都不可以进行访问。(只有同一个类中的函数可以访问它的私有成员。即使是类的实例也不能访问它的私有成员。)

protected类型的,允许其子类访问。

Internal 访问说明符允许一个类将其成员变量和成员函数暴露给当前程序中的其他函数和对象。换句话说,带有 internal 访问修饰符的任何成员可以被定义在该成员所定义的应用程序内的任何类或方法访问。

Protected Internal 访问修饰符允许一个类将其成员变量和成员函数对同一应用程序内的子类以外的其他的类对象和函数进行隐藏。这也被用于实现继承。

(13)引用参数

引用参数是对变量的内存位置的引用,在进行参数传递的时候,需要注意,引用参数传递的是变量的内存地址。

使用关键子ref声明引用参数。

(14)可以通过输出参数对一些变量进行赋值,使用与=ref相似,将ref改成out即可。

(15)C# 可空类型(Nullable)

C# 提供了一个特殊的数据类型,nullable 类型(可空类型),可空类型可以表示其基础值类型正常范围内的值,再加上一个 null 值。

在处理数据库和其他包含可能未赋值的元素的数据类型时,将 null 赋值给数值类型或布尔型的功能特别有用。例如,数据库中的布尔型字段可以存储值 true 或 false,或者,该字段也可以未定义。

int? num1 = null;

(16)Null 合并运算符( ?? )

如果第一个操作数的值为 null,则运算符返回第二个操作数的值,否则返回第一个操作数的值。

double? num1 = null;

double num3;

num3 = num1 ?? 5.34;

Console.WriteLine("num3 的值: {0}", num3);

结果是:5.34

(17)数组

数组中某个指定的元素是通过索引来访问的。

所有的数组都是由连续的内存位置组成的。最低的地址对应第一个元素,最高的地址对应最后一个元素。

(18)使用 foreach 循环

这个循环可以自己进行下一个,相当于ios中的内循环。

int []n = new int[10] {10.20.30.40};

foreach (int j in n )

{

int i = j-100;

Console.WriteLine("Element[{0}] = {1}", i, j);

i++;

}

(18)Array 类

在 System 命名空间中定义,是所有数组的基类,并提供了各种用于数组的属性和方法。

(19)字符串

字符串包含字符串:

using System;

namespace StringApplication

{

class StringProg

{

static void Main(string[] args)

{

string str = "This is test";

if (str.Contains("test"))

{

Console.WriteLine("The sequence 'test' was found.");

}

Console.ReadKey() ;

}

}

}

(20)GetType 与 typeof的区别是什么?前者是获取一个变量的类型,后者是获取一个类型是属于哪一个类,后者不能使用变量,前者使用的是变量。

Test testone = new Test();

string s = testone.GetType().ToString();

Console.WriteLine("GetType():");

Console.WriteLine(s);//_2011._12._15.Test 命名空间的Test类

Type type = typeof(Test);

Console.WriteLine("Typeof():");

Console.WriteLine(type);//_2011._12._15.Test 命名空间的Test类

Console.WriteLine();

(21)在使用枚举的时候注意,只能够将枚举变量赋值给枚举变量,不能够将元素的值直接赋值给枚举变量。

(22)继承

派生类,基类的初始化。

多继承,

C#中的多继承概念与C++中的不一样,C#不支持多继承,可以通过接口来进行实现。

(23)重载

静态和动态

静态:函数重载和运算符重载,函数重载的时候必须存在参数的类型或者是参数的个数不同。

动态:抽象类和虚方法

使用关键字 abstract 创建抽象类,用于提供接口的部分类的实现。当一个派生类继承自该抽象类时,实现即完成。抽象类包含抽象方法,抽象方法可被派生类实现。

抽象方法是在抽象类中定义的方法,在方法的返回类型前加上关键字abstract,

注意:

不能创建一个抽象类的实例。

不能在一个抽象类外部声明一个抽象方法。

通过在类定义前面放置关键字 sealed,可以将类声明为密封类。当一个类被声明为 sealed 时,它不能被继承。抽象类不能被声明为 sealed。

抽象方法以及虚方法在实现的时候,需要在方法名的前面加上override

当有一个定义在类中的函数需要在继承类中实现时,可以使用虚方法。虚方法是使用关键字 virtual 声明的。虚方法可以在不同的继承类中有不同的实现。对虚方法的调用是在运行时发生的。

运算符的重载:

重载运算符是具有特殊名称的函数,是通过关键字 operator 后跟运算符的符号来定义的。与其他函数一样,重载运算符有返回类型和参数列表。

C#中不存在多继承,但是可以通过接口实现多继承。

(24)异常处理

C# 异常处理时建立在四个关键词之上的:try、catch、finally 和 throw。

try:一个 try 块标识了一个将被激活的特定的异常的代码块。后跟一个或多个 catch 块。

catch:程序通过异常处理程序捕获异常。catch 关键字表示异常的捕获。

finally:finally 块用于执行给定的语句,不管异常是否被抛出都会执行。例如,如果您打开一个文件,不管是否出现异常文件都要被关闭。

throw:当问题出现时,程序抛出一个异常。使用 throw 关键字来完成。

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace jusuanqi

{

public partial class Form1 : Form

{

bool flag = true;

int num1, num2;

int sum = 0;

string MK = "a";

public Form1()

{

InitializeComponent();

}

public void clicked(object sender, EventArgs e)

{

if (string.Equals(MK,"a"))

{

Button b = (Button)sender;

if (textBox1.Text != "0")

{

textBox1.Text += b.Text;

num1 = Convert.ToInt32(b.Text);

}

else

{

textBox1.Text = b.Text;

}

}

else

{

Button b = (Button)sender;

if (textBox1.Text != "0")

{

textBox1.Text += b.Text;

num2 = Convert.ToInt32(b.Text);

}

else

{

textBox1.Text = b.Text;

}

}

}

public void operation(object sender, EventArgs e)

{

Button b = (Button)sender;

if (textBox1.Text != "0")

{

textBox1.Text += b.Text;

}

else

{

textBox1.Text = b.Text;

}

MK = b.Text;

}

public void op()

{

if (string.Equals(MK, "+"))

{

sum = num1 + num2;

}

if (string.Equals(MK, "-"))

{

sum = num1 - num2;

}

if (string.Equals(MK, "*"))

{

sum = num1 * num2;

}

if (string.Equals(MK, "/"))

{

sum = num1 / num2;

}

string str = Convert.ToString(sum);

textBox1.Text = str;

}

private void textBox1_TextChanged(object sender, EventArgs e)

{

}

private void button1_Click(object sender, EventArgs e)

{

clicked(sender,e);

}

private void button2_Click(object sender, EventArgs e)

{

clicked(sender, e);

}

private void button3_Click(object sender, EventArgs e)

{

clicked(sender, e);

}

private void button6_Click(object sender, EventArgs e)

{

clicked(sender, e);

}

private void button7_Click(object sender, EventArgs e)

{

clicked(sender, e);

}

private void button8_Click(object sender, EventArgs e)

{

clicked(sender, e);

}

private void button10_Click(object sender, EventArgs e)

{

clicked(sender, e);

}

private void button9_Click(object sender, EventArgs e)

{

clicked(sender, e);

}

private void button11_Click(object sender, EventArgs e)

{

clicked(sender, e);

}

private void button15_Click(object sender, EventArgs e)

{

clicked(sender, e);

}

private void button5_Click(object sender, EventArgs e)

{

operation(sender,e);

}

private void button12_Click(object sender, EventArgs e)

{

operation(sender, e);

}

private void button13_Click(object sender, EventArgs e)

{

operation(sender, e);

}

private void button14_Click(object sender, EventArgs e)

{

operation(sender, e);

}

private void button4_Click(object sender, EventArgs e)

{

op();

}

private void button17_Click(object sender, EventArgs e)

{

MK = "a";

sum = 0;

textBox1.Text = "0";

num1 = 0;

num2 = 0;

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: