C#自学笔记
来源:互联网 发布:金穗开票软件 编辑:程序博客网 时间:2024/05/17 23:35
C#自学笔
/** 基本格式*/using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace name { class program { static void Main(String[] args) { } }}
c#类型
值类型:
简单类型:
符号整型 :sbyte short int long
无符号类型 :byte ushort uint ulong
unicode字符: char
浮点型 : float double
精度小数 :decimal
布尔型 :bool
枚举类型:
枚举定义 :enum name {}
结构类型:
结构定义 :struct name {}
引用类型:
类类型:
最终基类 :object
字符串 : string
定义类型 :class name
接口类型:
接口定义 :interface
数组类型:
数组定义 :int[]
委托类型:
委托定义 :delegate name
各种类型的取值范围:
sbyte : -128 ~ 127 整数
byte : 0 ~ 255 整数
short :-32768 ~ 32767 整数
ushort :0 ~ 65535 整数
int : -2147483648 ~ 2147483647 整数
uint :0 ~ 4294967295 整数
long : 很大
ulong :很大
float : 32位浮点数,精度是7位
double : 64位浮点数,精度是15~16位
bool :布尔型有两个取值范围,分别是 true 和 false
string :可以取unicode中所有字符 而不是 ascll
decimal : 一种高精度的、128位的数据类型,常用于金融和货币计算项目,28~29位有效数字,取值范围 10 ~ 70 或 -10 ~ -70
string : 用来表示字符串,常用于文本字符的代替,是字符char 的集合 例如 string name = “张瑀楠”;string 变量可以使用 + 连接
例如 string mm = “hello “; string nn = “world”; mm = mm + nn; 则 mm 的值为 hello world
各种类型的声明和赋值(这个应该都会吧)
int age = 100;
string name = “张瑀楠“;
char ch = ‘a’;
在输出变量时 变量必须已经被赋值
常量
通常将只固定不变的变量成为常量
常量的类型 sbyte byte ushort short int uint long char double float decimal bool string or enum
常量在定义的时候 使用 const 并且常量在定义的时候必须初始化
正确用法:
const int a = 78;
const string nn = “value”;
错误写法:
const int a ;
a = 78;
/*
这是我学习 c# 2天时做的总结昨天刚看了一本书的前100页 我打算现在开始学
time 2014/12/6
*/
进制的转换
Convert.ToInt32(“转换的数”,基数);
demo:
二进制转为十进制
Convert.ToInt32(“110011”,2);
八进制转为十进制
Convert.ToInt32(“567”,8);
Convert.ToString(数字,基数);
demo:
十进制转为二进制
Convert.ToString(89,2);
类型转换:
隐式转换:
在c#中bool和string是没有隐式转换的
其他隐式转换遵循取值范围的从小到大
显示转换:一种强制的转换方式 例子: double var1 = 45.45; int var2 = (int)var1; 对显示转换进行检查 int n = 8226589; short s = checked(short(n)); 当出现溢出时,会报出异常字符串和数字之间的转换 demo string str = "3.14"; double pi = Convert.ToDouble(str);
基本的.NET框架
Console类
Console类能够为控制台应用程序提供字符的读写支持,其常用方法有:
WriteLine(); //the mathons same as printf(“…….\n”,….);
具体用法:
Console.WriteLine(“adcd”); //这个等同于 printf(“abcd\n”);
int a = 16;
Console.WriteLine(“a = {0}”,a); //这个相当于 printf(“a = %d\n”,a);
//在c#中输出时不需要去为定义的变量加输入格式 当然 为了特殊需要 我们也可以加上格式输出
Write(); //the mathons same as printf(“….”,…..);
//也就是这里输出时没有换行,其他和WriteLine相同
Read(); 从输入的时候读入一个字符 用法: char Key = Console.Read(); 即使 我要输入 ab 结果key只是a ReadLine(); 从输入的时候读入一整行数据 用法: string str = Console.ReadLine(); 如果输入ab 此时 str就是ab 现在只是说了字符的输入 等下再写 关于数值的输入方法Convert类 能够将一种基本类型转换成另一种基本类型 ToByte() 转换为byte型 ToInt16() ...short ToInt32() ...int ToInt64() ...long ToSByte() ...sbyte ToUInt16()...ushort ToUint32()...uint ToUInt64()...ulong ToSingle()...float ToDouble()...double ToDecimal()...decimal ToChar() ...char ToString()...string ToBoolean()...bool 这些转换自动进行溢出检查,不需要使用checked 例子: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.Write("请输入一个数字字符串"); string mm = Console.ReadLine(); decimal nn = Convert.ToDecimal(mm); double zz = Convert.ToDouble(nn); int i = Convert.ToInt32(zz); char ch = Convert.ToChar(97); Console.WriteLine("输入的是{0}", mm); Console.WriteLine("decimal形式是{0}", nn); Console.Write("double 形式是{0}",zz); Console.Write("int 形式是{0}",i); Console.Write("ch 形式为{0}" ch); Console.ReadKey(); } } } result: 请输入一个数字字符串1234 输入的是1234 decimal形式是1234 double 形式是1234int 形式是1234 ch 形式为 a 通过例子可以看出Console and Convert 的 用法 通时也提供了一种 数值输入的方法 关于数值的输入,可以使用上面中的类型转换的方法 int a = Convert.ToInt32(Console.Read()); demo: static void Main(String[] args) { double r , s; Console.Write("r = "); r = Convert.ToInt32(Console.ReadLine()); s = 3.14 * 3.14 * r; Console.WriteLine("s = " + s); }Math类 一些简单的表达式 Math.Sqrt(value); 求平方根 Math.Pow(a,b); 求 a 的 b 次幂变量的格式化输出 控制宽度{,宽度:c小数位数} //c为货币符号 {,#.00} 显示两位小数基姆拉尔森公式: 根据日期求这天是周几 int y = 2008; int m = 8; int d = 8; int week = (d + 2 * m + 3 * (m + 1 )/5 + y + y / 4 - y / 100 + y / 400 + 1) % 7;
表达式和运算符
表达式学过编程语言的应该都明白,现在开始说说运算符
. 运算符 通过 . 运算符可以对项目内不同的成员进行访问,包括命名空间的访问类、类访问方法和数值() 运算符 定义方法和委托[] 运算符 能够存储项目预防问的元素 例如数组的读取++ -- 运算符new 运算符 可以创建项目中引用类型的实例,即创建类、数组和委托的实例sizeof 运算符 返回指定类型的所占的字节数typeof 运算符数学运算符 运算符 类别 处理表达式 result + 二元 mm = nn + zz; plus - 二元 mm = nn - zz; sub * 二元 mm = nn * zz; 积 / 二元 mm = nn / zz; 商 % 二元 mm = nn % zz; 模 + 一元 mm = +nn; 乘以 +1 - 一元 mm = -nn; 乘以 -1 += 二元 mm += nn; mm = mm + nn; -= 二元 mm -= nn; mm = mm - nn; *= 二元 mm 8= nn; mm = mm * nn; /= 二元 mm /= nn; mm = mm / nn; %= 二元 mm %= nn; mm = mm % nn;比较运算符(与其他语言一样) == < > <= >= !=逻辑运算符 ! & | ~ mm = nn ~ zz; if nn and zz only is true ,mm = true。 || &&移位运算符 << >>运算符的优先级
流程控制语句
if…else…
switch //需要理解和其他语言中的switch的不同while() {...} and do {...} while()for( ; ; )breakcontinuegotoreturn
复杂的数据类型
枚举
枚举类型用关键字enum定义,中间用逗号隔开(默认从零开始计数,即Sunday 为0,Monday为 10):
enum WeekDays{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday}
demo:
namespace Demo
{
enum WeekDays{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday}
class Program
{
static void Main(String[] args)
{
WeekDays today = Wednesday.Sunday;
if(today == Wednesday.Saturday || today == Wednesday.Sunday)
{
Console.WriteLine(“I love the weekends”);
}
else
{
Console.WriteLine(“Back to work”);
}
WeekDays temp; temp = (WeekDays) 3; Console.WriteLine(temp); temp = WeekDays.Friday; Console.WriteLine((int)temp); //枚举型进行计算 temp = temp + 1; Console.WriteLine(temp); } } } enum WeekDays { Sunday = -5, Monday, //-4 Tuesday, //-3 Wednesday = 100, Thursday, //101 Friday, //102 Saturday //103 }结构 结构体有struct定义 struct Student { public int number; public string name; public string sex; public string birthday; } demo static void Main(String[] args) { Student zyn; zyn.number = 2013040510; zyn.name = "zyn"; zyn.sex = "man"; zyn.birthday = "1994.01.09"; Console.Write("学号:" + zyn.number); Console.Write("姓名: " + zyn.name); Console.Write("性别: " + zyn.sex); Console.Write("生日: " + zyn.birthday); }数组 这里的数组的定义方法异于c和c++ 数组在定义的时候 int[] aa = {...}; rather than int a[]; demo static void Main(String[] args) { int[] scores = { 120 ,149 ,112 ,133 ,127}; for(int i = 0 ; i < scores.Length ; ++i) { Console.Write(scores[i]); } string[] friendNames = new string[3]; friendNames[0] = "hl"; friendNames[1] = "hh"; friendNames[2] = "hs"; foreach(string name in friendNames) { Console.WriteLine(name); } } 多维数组的使用 static void Main(string[] args) { //定长数组 int[,] Matrix = { {1 , 2 , 3} ,{4 , 5 , 6} , { 7 , 8 , 9}}; int sum = 0; for(int i = 0 ; i < 3 ; ++i) { for(int j = 0 ; j < 3 ; ++j) { sum += Matrix[i][j]; } } Console.WriteLine("the sum of Matrix is " + sum); //不定长数组 int[][] ja = new int[2][]; ja[0] = new int[3]; ja[1] = new int[4]; ja[2] = new int[5]; }
函数
function
参数传递
值传递
地址传递
复杂类型的参数传递
引用型参数传递(ref)
demo(swap value a and b)
void Swap(ref int x,ref int y)
{
int temp = x;
x = y;
y = temp;
}
输出型参数传递(out)
out型参数传入函数前不需赋值,即使赋值也会被忽略
demo(已知半径就面积)
double CalculateCircle(double r , out double c)
{
c = 2 * Math.PI * r ;
double s = Math.PI * r * r;
return s;
}
递归函数 斐波那契 demo static int Fibonacci(int n) { if( n == 1 || n == 2) { return 1; } else { return Fibonacci(n - 1) + Fibonacci(n - 2); } }
面向对象编程技术
类
class Person
{
public string name;
public int age;
public string sex;
private int miceCount = 0;
private void Hello() { Console.Write("haha zyn"); } public void Neow() { Hello(); Console.WriteLine("miaomiao"); } } 构造函数 析构函数非托管程序(不是在.NET程序下运行的程序)System.Gc.Collect() 强制调用垃圾回收机制readonly 常量方法的重载运算符的重载 重载运算符由关键字 operator 声明,必须定义为静态 demo class Complex { public double a; public double b; public static Complex operator + (Complex p1 , Complex p2) { return new Complex(p1.a + p2.a , p1.b + p2.b); } public Complex(double real , double imagi) { a = real; b = imagi; } }
核心技术篇
方法
- C#自学笔记
- C#自学笔记
- C#之消息队列之自学笔记
- 黑马程序员----C#基础自学笔记
- 黑马程序员----C#面向对象自学笔记
- C#自学快速入门经典笔记心得
- 《项目中的.net》之C#自学笔记
- C# MVC 自学笔记—1 前言
- 【Unity3D自学记录】C#语法笔记
- C#陈广自学视频笔记1
- C#陈广自学视频笔记5
- 自学笔记一:C#语法基础 类
- 自学笔记
- C#之消息队列的简要说明----自学笔记
- C# MVC 自学笔记—2 MVC Movie简介
- C# MVC 自学笔记—3 添加控制器
- C# MVC 自学笔记—4 添加视图
- C# MVC 自学笔记—5 添加模型
- 希尔伯特之梦,以及梦的破灭
- java annotation注解的解析
- OpenGL镜面效果
- 实训第一周java小练习
- 在思想上改变,在行动上升华
- C#自学笔记
- 完美数字
- nginx的虚拟主机功能(nginx多站点,绑定多个域名)-----nginx的学习之路
- HDU2225奔小康赚大钱(KM匹配模板题)
- 引用和指针的区别
- 别人的确为了别人——价值观
- kali下安装vmtools
- 装饰者模式
- struts2之Action名称的搜索顺序