【翻译】C#和.NET核心快速参考

简介: 原文:【翻译】C#和.NET核心快速参考PS:在网上看到的一篇C#总结,英文的,总结的还可以,都是基础知识,翻译给大家学习。文章结尾有英文原版。发布地址:http://www.cnblogs.com/zxlovenet/p/3745903.
原文: 【翻译】C#和.NET核心快速参考

PS:在网上看到的一篇C#总结,英文的,总结的还可以,都是基础知识,翻译给大家学习。文章结尾有英文原版。发布地址:http://www.cnblogs.com/zxlovenet/p/3745903.html

 

1.数据类型

 

类型名

大小

示例

String

2字节/字符

S=”reference”;

Bool

 

b=true;

char

2字节

ch=’a’;

byte

1字节

b=0x78;

short

2字节

lval=54;

int

4字节

lval=540;

long

8字节

lval=5400;

float

4字节

val=54.0F;

double

8字节

val=54.0D;

decimal

16字节

val=54.0M;

 

2.数组

 

描述

int[] numArray = {1903, 1907, 1910};
int[] numArray = new int[3];
// 3行2列
int[ , ] nums = {{1907, 1990}, {1904, 1986}, {1910, 1980}};

 发布地址:http://www.cnblogs.com/zxlovenet/p/3745903.html

数组操作

Array.Sort(numArray); // 升序排列
// 排序开始在4位置,排序10个元素
Array.Sort(numArray, 4, 10);
// 使用一个数组作为键排序两个数组
string[] values = {“Cary”, “Gary”, “Barbara”};
string[] keys = {“Grant”, “Cooper”, “Stanwyck”};
Array.Sort(keys, values);
// 清除数组中的元素(数组元素, 第一个元素, 元素长度)
Array.Clear(numArray, 0, numArray.Length);
// 拷贝数组元素到另一个数组
Array.Copy(src, target, numelements);

 

3.字符串操作

 

方法

描述

Compare

String.Compare(stra,strb,case,ci)

case(布尔类型)true为不区分大小写

ci – new CultureInfo(“en-US”)

返回结果: <0 if a<b, 0 if a=b, 1 if a>b

IndexOf

Str.IndexOf(val,start,num)

Val – 要搜索的字符串

Start – 搜索字符串开始的位置

Num – 搜索的长度

LastIndexOf

从字符串的结尾开始搜索

Split

Char[] delim = {‘’,’,’};

string w = “Kim, Joanna Leslie”;

//创建有三个名字的字符串数组

String[] names = w.Split(delim);

Substring

Mystring.Substring(ndx,len)

String alpha = “abcdef”;

//返回”cdef”

String s = alpha.Substring(2);

//返回”de”

S = alpha.Substring(3,2);

ToCharArray

被选中的字符作为字符串转换成字符数组

String vowel = “aeiou”;

//创建5个元素的数组

Char[] c = vowel.ToCharArray();

//创建’i’和’o’的数组

Char[] c= vowel.ToCharArray(2,2);

RePlace

Newstr = oldstr.Replace(“old”,”new”);

发布地址:http://www.cnblogs.com/zxlovenet/p/3745903.html

4.System.Text.StringBuilder

 

创建

StringBuilder sb=new StringBuilder();
StringBuilder sb=new StringBuilder(mystring);
StringBuilder sb=new StringBuilder(mystring,capacity);

Mystring - 对象的初始值

Capacity – 缓冲区初始大小(字节)

 

Using StringBuilderMembers
decimal bmi = 22.2M;
int wt=168;
StringBuilder sb = new StringBuilder(“My weight is ”);
sb = sb.Append(wt); 
// 可以追加数量
sb= sb.Append(“ and my bmi is ”).Append(bmi);
// 我的重量是 168 ,我的bmi(身体质量指数)指数是 22.2
sb= sb.Replace(“22.2”,”22.4”);
string s = sb.ToString();
// 清除并设置新值
sb.Length=0;
sb.Append(“Xanadu”);

 

5. DateTime 和 TimeSpan

 

DateTime Constructor
DateTime(yr, mo, day)
DateTime(yr, mo, day, hr, min, sec)
 
DateTime bday = new DateTime(1964,12,20,11,2,0);
DateTime newyr = DateTime.Parse(“1/1/2005”);
DateTime currdt = DateTime.Now;
// also AddHours, AddMonths, AddYears
DateTime tomorrow = currdt.AddDays(1);
TimeSpan diff = currdt.Subtract(bday);
//从12/20/64 到 6/24/05 14795 天
Console.WriteLine(“{0}”, diff.Days); 
// TimeSpan(hrs, min, sec)
TimeSpan ts = new TimeSpan(6, 30, 10);
// also FromMinutes, FromHours, FromDays
TimeSpan ts = TimeSpan.FromSeconds(120);
TimeSpan ts = ts2 – ts1;  // +,-,>,<,==, !=  

发布地址:http://www.cnblogs.com/zxlovenet/p/3745903.html

6.格式化数字和日期值

 

格式项语法: {index[,alignment] [:format string]}

index – 格式化作用于列表中选定的元素。

alignment – 用最小的宽度(字符)来表示值。

format string – 包含指定要显示格式的代码

例子:String.Format(“价格是: {0:C2}”, 49.95);  //输出:价格是: $ 49.95

 

a.数字格式

格式说明符

模式

描述

C 或 c

{0:C2}, 1388.55

$ 13888.55

货币

D 或 d

{0:D5}, 45

00045

必须是整数值

E 或 e

{0,9:E2},1388.55

139+E003

必须是浮点数

F 或 f

{0,9:F2},1388.55

1388.55

定点表示

N 或 n

{0,9:N1},1388.55

1,388.6

 

P 或 p

{0,9:P3},.7865

78.650%

 

R 或 r

{0,9:R},3.14159

3.14159

 

X 或 x

{0,9:X4},31

001f

 

示例:

CultureInfo ci = new CultureInfo("de-DE"); // 德国文化
string curdt = String.Format(ci,"{0:M}",DateTime.Now); // 29 Juni

 

b. 时间格式:(2005年1月19日16:05:20)的美国格式值

格式

显示值

格式

显示值

d

1/19/2005

Y or y

January,25

D

Wednesday,January 19,2005

t

4:05 PM

f

Wednesday,January 19,2005 4:05:20 PM

T

4:05:20 PM

F

Wednesday,January 19,2005 4:05 PM

s

2005-01-19T16:05:20

g

1/19/2005 4:05 PM

u

2005-01-19 16:05:20Z

G

1/19/2005 4:05:20 PM

U

Wednesday, January

19, 2005 21:05:20PM

M or m

January 19

 

 

发布地址:http://www.cnblogs.com/zxlovenet/p/3745903.html

7. 使用 System.Text.RegularExpressions.Regex 类

 

string zipexp = @"\d{5}((-|\s)?\d{4})?$";
string addr="W.44th St, New York, NY 10017-0233";
Match m = Regex.Match(addr,zipexp); //静态方法
Regex zipRegex= new Regex(zipexp);
m= zipRegex.Match(addr); // 使用正则表达式对象
Console.WriteLine(m.Value); // 10017-0233

 

模式

描述

范例

+

匹配一个或多个

ab+c 匹配 abc,abbc

*

匹配零个或多个

ab*c 匹配 ac,abbc

?

匹配零个或一个

ab?c 匹配 ac,abc

\d  \D

匹配十进制数字或非数字(\D)

\d\d 匹配 01,55

\w  \D

匹配任何单字符或非字符

\w 等价于 [a-zA-Z0-9_]

\s  \S

匹配空白或非空白

\d*\s\d+ 匹配 246 98

[  ]

匹配任何设置的字符

[aeiou]n 匹配 in,on

[^ ]

匹配没有设置的字符

[^aeiou] 匹配 r 或 2

a | b

a或者b

jpg|jpeg|gif 匹配 .jpg

\n \r \t

换行,回车,制表

 

 

8.在命令行中使用C#编译器

 

C:\> csc /t:library /out:reslib.dll mysource.cs

csc /t:winexe /r:ctls1.dll /r:ctls2.dll winapp.cs

csc /keyfile:strongkey.snk secure.cs

 

设置

描述

/ addmodule

从一个执行文件中导入元数据,不包含manifest。

/ debug

告诉编译器生成调试信息。

/ doc

指定一个XML文档文件,在编译过程中创建。

/ keyfile

指定用于包含文件密钥,创建一个强命名程序集。

/ lib

指定目录中搜索,外部引用的程序集。

/ out

编译输出文件的名称。

/reference (/r)

引用外部程序集。

/resource

资源文件在输出中嵌入。

/target (/t)

/t:exe /t:library /t:module /t:winexe

发布地址:http://www.cnblogs.com/zxlovenet/p/3745903.html

9.C#语言基础

 

控制流语句

switch (表达式)

{ case 表达式:

// 语句

break / goto / return()

case ...

default:

// 语句

break / goto / return()

}

表达式可以是

整形、字符串或枚举类型。

switch (类型)

{

case “vhs”:

price= 10.00M;

break;

case “dvd”:

price=16.00M;

break;

default:

price=12.00M:

break;

}

if (条件) {

// 语句

} else {

// 语句

}

if (genre==”vhs”)

price=10.00M;

else if (genre==”dvd”)

price=16.00M;

else price=12.00M;

循环结构

while (条件)

{ body }

do { body }

while (条件);

while ( ct < 8)

{ tot += ct; ct++; }

do { tot += ct; ct++;}

while (ct < 8);

循环结构(续)

for (初始值;终止条件;迭代;)

{ // 语句 }

foreach (类型 变量名 in 集合)

{ // 语句 }

for (int i=0;i<8;i++)

{

tot += i;

}

int[] ages = {27, 33, 44};

foreach(int age in ages)

{ tot += age; }

 

10.C#类定义

 

[public | protected | internal | private]

[abstract | sealed | static]

class 类名 [:继承类/接口]

构造函数

[修饰符权限] 类名 (参数) [:initializer]

initializer –在基类中调用基构造函数。

这就要求在类的构造函数。

public class Shirt: Apparel {

public Shirt(decimal p, string v) : base(p,v)

{ constructor body }

方法

[修饰符权限]

[static | virtual | override | new | sealed | abstract ]

方法名 ( 参数列表) { 主体 }

virtual –方法可以在子类中被覆盖。

override –在重写基类的虚方法。

new –在基类中隐藏了非虚拟方法。

sealed –防止派生类继承。

abstract –必须由子类实现。

传递参数:

a. 默认情况下,参数是按值传递。

b. ref和out修饰符:通过引用传递

string id= “gm”; // 调用者初始化ref

int weight; // 被调用方法初始化

GetFactor(ref id, out weight);

// ... 其它代码

static void GetFactor(ref string id, out int wt)

{

if (id==”gm”) wt = 454; else wt=1;

return;

}

Prope

属性

[修饰符] <数据类型> 属性名称{

public string VendorName

{

get { return vendorName; }

set { vendorName = value; }

}

 

11. 委托和事件

 

委托

[修饰符] delegate 返回值类型 委托名称 ([参数列表]);

// (1) 定义一个委托调用方法(S)具有单个字符串参数
public delegate void StringPrinter(string s);
// (2) 注册方法通过委托调用
StringPrinter prt = new StringPrinter(PrintLower);
prt += new StringPrinter(PrintUpper);
prt(“Copyright was obtained in 2005”); / /执行PrintLower和PrintUpper
使用匿名方法与委托,而不是调用一个方法,委托封装的代码被执行:
prt = delegate(string s) { Console.WriteLine(s.ToLower()); };
prt += delegate(string s) { Console.WriteLine(s.ToUpper()); };
prt(“Print this in lower and upper case.”);

 

事件

// class.event += new delegate(event handler method);
Button Total = new Button();
Total.Click += new EventHandler(GetTotal);
//事件处理程序方法必须已经指定由委托签名
private void GetTotal( object sender, EventArgs e) {}

 

常用的控件事件

事件

委托

Click, MouseEnter

DoubleClick, MouseLeave

EventHandler( object sender, EventArgs e)

MouseDown, Mouseup,

MouseMove

MouseEventHandler(object sender,MouseEventArgs e)

e.X, e.Y – x和y坐标

e.Button – MouseButton.Left, Middle, Right

KeyUp, KeyDown

KeyEventHandler(object sndr, KeyEventArgs e)

e.Handled –表示事件是否被处理。

e.KeyCode –Keys枚举,例如,Keys.V

e.Modifiers –表示如果Alt键,Ctrl或Shift键。

KeyPress

KeyPressEventHandler(object sender,KeyPressEventArgs e)

 

12. 结构体

 

[属性][修饰符] 结构体名称 [:接口] { 结构体主体}

与类的区别:

1.是值类型•不能从一个类继承或继承

2.字段不能有初始值设定•显式构造函数必须有一个参数

 

13. 枚举 (被枚举的类型)

 

枚举

枚举操作

e num Fabric: int {

cotton = 1,

silk = 2,

wool = 4,

rayon = 8

}

int cotNum = (int) Fabric.cotton; // 1

string cotName = Fabric.cotton.ToString(); // cotton

string s = Enum.GetName(typeof(Fabric),2); // silk

//创建wool枚举实例,如果它是有效的

if(Enum.IsDefined(typeof(Fabric), “wool”)

Fabric woolFab = (Fabric)Enum.Parse(typeof(Fabric),”wool”);

源文件:http://files.cnblogs.com/zxlovenet/ccnaqr.pdf

目录
相关文章
|
10天前
|
数据可视化 网络协议 C#
C#/.NET/.NET Core优秀项目和框架2024年3月简报
公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的介绍、功能特点、使用方式以及部分功能截图等(打不开或者打开GitHub很慢的同学可以优先查看公众号推文,文末一定会附带项目和框架源码地址)。注意:排名不分先后,都是十分优秀的开源项目和框架,每周定期更新分享(欢迎关注公众号:追逐时光者,第一时间获取每周精选分享资讯🔔)。
|
1月前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
61 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
1月前
|
开发框架 算法 搜索推荐
C# .NET面试系列九:常见的算法
#### 1. 求质数 ```c# // 判断一个数是否为质数的方法 public static bool IsPrime(int number) { if (number < 2) { return false; } for (int i = 2; i <= Math.Sqrt(number); i++) { if (number % i == 0) { return false; } } return true; } class Progr
58 1
|
1月前
|
并行计算 安全 Java
C# .NET面试系列四:多线程
<h2>多线程 #### 1. 根据线程安全的相关知识,分析以下代码,当调用 test 方法时 i > 10 时是否会引起死锁? 并简要说明理由。 ```c# public void test(int i) { lock(this) { if (i > 10) { i--; test(i); } } } ``` 在给定的代码中,不会发生死锁。死锁通常是由于两个或多个线程互相等待对方释放锁而无法继续执行的情况。在这个代码中,只有一个线程持有锁,且没有其他线程参与,因此不
102 3
|
3月前
|
Linux C# 开发工具
C#开源的一款友好的.NET SDK管理器
C#开源的一款友好的.NET SDK管理器
|
4天前
|
开发框架 前端开发 JavaScript
采用C#.Net +JavaScript 开发的云LIS系统源码 二级医院应用案例有演示
技术架构:Asp.NET CORE 3.1 MVC + SQLserver + Redis等 开发语言:C# 6.0、JavaScript 前端框架:JQuery、EasyUI、Bootstrap 后端框架:MVC、SQLSugar等 数 据 库:SQLserver 2012
|
1月前
|
开发框架 人工智能 .NET
C#/.NET/.NET Core拾遗补漏合集(持续更新)
C#/.NET/.NET Core拾遗补漏合集(持续更新)
|
1月前
|
SQL 存储 关系型数据库
C# .NET面试系列十:数据库概念知识
#### 1. 为什么要一定要设置主键? 设置主键是数据库设计中的一个重要概念,有几个主要原因: 1、唯一性 ```c# 主键必须保证表中的每一行都有唯一的标识。这样可以避免数据冗余和不一致性。如果没有主键或者主键不唯一,就可能出现数据混乱或错误。 ``` 2、查询性能 ```c# 数据库系统通常会使用主键来加速数据检索。主键通常会被索引,这样可以更快速地找到特定行的数据,提高查询效率。 ``` 3、关联性 ```c# 主键常常用于建立表与表之间的关系。在关系数据库中,一个表的主键通常与其他表中的外键建立关联,这种关系对于数据的一致性和完整性非常重要。 ``` 4、数据完
131 1
C# .NET面试系列十:数据库概念知识
|
1月前
|
XML 开发框架 .NET
C# .NET面试系列八:ADO.NET、XML、HTTP、AJAX、WebService
## 第二部分:ADO.NET、XML、HTTP、AJAX、WebService #### 1. .NET 和 C# 有什么区别? .NET(通用语言运行时): ```c# 定义:.NET 是一个软件开发框架,提供了一个通用的运行时环境,用于在不同的编程语言中执行代码。 作用:它为多语言支持提供了一个统一的平台,允许不同的语言共享类库和其他资源。.NET 包括 Common Language Runtime (CLR)、基础类库(BCL)和其他工具。 ``` C#(C Sharp): ```c# 定义: C# 是一种由微软设计的面向对象的编程语言,专门为.NET 平台开发而创建。 作
174 2
|
1月前
|
开发框架 中间件 .NET
C# .NET面试系列七:ASP.NET Core
## 第一部分:ASP.NET Core #### 1. 如何在 controller 中注入 service? 在.NET中,在ASP.NET Core应用程序中的Controller中注入服务通常使用<u>依赖注入(Dependency Injection)</u>来实现。以下是一些步骤,说明如何在Controller中注入服务: 1、创建服务 首先,确保你已经在应用程序中注册了服务。这通常在Startup.cs文件的ConfigureServices方法中完成。例如: ```c# services.AddScoped<IMyService, MyService>(); //
60 0