
c# 基础:表达式 语句 逻辑控制
alisa525
这个作者很懒,什么都没留下…
展开
-
switch-case语句用法
if语句处理两个分支,处理多个分支时需使用if-else-if结构,但如果分支较多,则嵌套的if语句层就越多,程序不但庞大而且理解也比较困难.因此,C语言又提供了一个专门用于处理多分支结构的条件选择语句,称为switch语句,又称开关语句.使用switch语句直接处理多个分支(当然包括两个分支).其一般形式为:引用 switch(表达式){ case 常量表达式转载 2012-08-01 13:35:55 · 1251 阅读 · 0 评论 -
关于在C#中数组(byte[])复制的两种方式。字节偏移复制与安全复制
static void Main(string[] args) { int[] src = new[] { 1, 2, 3, 4, 5, 6 }; const int destLen = 4;//目标数组大小 int int_size = sizeof(int);//用于获取值类型的字节大小。转载 2013-10-09 17:45:54 · 18113 阅读 · 0 评论 -
获取对象的属性列表
获取对象的属性列表 object obj = model; var query = from x in obj.GetType().GetProperties() select x.Name; foreach (var item in query) { Console.WriteLine(item); }转载 2013-08-01 13:01:44 · 797 阅读 · 0 评论 -
遍历控件的属性ctrl.GetType().GetProperties()
PropertyInfo[] propertys = new myClass().GetType().GetProperties(); 即可获得对象myClass的所有属性组成的集合 propertys //获取控件属性 public void GetCtrAttribute(Control ctrl)转载 2013-06-13 14:43:02 · 4277 阅读 · 1 评论 -
List 用法
DB.SensorModel.SensorData d=new DB.SensorModel.SensorData(); rtdataTemp.lstSensorDatas[rtdataTemp.lstSensorDatas.IndexOf(d)] = d;原创 2013-05-27 16:44:34 · 584 阅读 · 0 评论 -
socket联接断开后重连很慢
可能原因:1. client程序出问题。可能原因有你是否设定了socket的延迟属性,即setsockopt了SO_LINGER,closesocket后,socket并没有马上关闭,而是等未send的数据send完以后,才close2、关闭后保持连接10s System.Net.Sockets.LingerOption lingerOption = new System.Net转载 2013-05-24 13:31:15 · 4520 阅读 · 0 评论 -
int 与 byte[] 的相互转换
int 与 byte[] 的相互转换1. 最普通的方法从byte[] 到 uint b = new byte[] {0xfe,0x5a,0x11,0xfa};u = (uint)(b[0] | b[1] 从int 到 byte[]b[0] = (byte)(u);b[1] = (byte)(u >> 8);b[2] = (byte)(u >> 16);b[3转载 2013-04-24 13:24:24 · 675 阅读 · 0 评论 -
C#中const与 static readonly 区别
尽管你写了很多年的C#的代码,但是可能当别人问到你const与static readonly的区别时候,还是会小小的愣一会吧~ 笔者也是在看欧立奇版的《.Net 程序员面试宝典》的时候,才发现自己长久以来竟然在弄不清出两者的情况下,混用了这么长的时间。的确,const与static readonly 很像,都是将变量声明为只读,且在变量初始化后就不可改写。那么,const与stati转载 2013-03-21 11:42:41 · 756 阅读 · 0 评论 -
当调用List Remove 失效时 [C#]
有没有试过从一个集合里面移除一个对象之后,这个集合仍然留有这个对象?世界之大,无奇不有。稍有疏忽,便会导致这种奇怪的现象。现在让我们看看这个“不死”对象究竟是怎么一回事。 1、“不死”对象现身这个问题起初是我一个同事提出的,为了重现“不死”对象,现把代码简化如下:// Code #01IList products = new ListProduct>();produ转载 2013-02-21 17:05:35 · 4557 阅读 · 2 评论 -
引用类型的赋值、浅拷贝和深拷贝的区别
引用类型的赋值以及浅拷贝和深拷贝三种的数据操作是不一样的。用类的对象来进行举例说明首先,赋值的话很简单,就是将原来对象的地址给新的对象拷贝一下即可。浅拷贝,需要继承ICloneable 接口(支持克隆,即用与现有实例相同的值创建类的新实例)然后用MemberwiseClone 方法(创建当前 System.Object 的浅表副本)。但是需要注意的是Memberwise转载 2014-08-11 17:25:50 · 3466 阅读 · 0 评论 -
理解.NET中的异常(二)
4.1 System.Exception 类型CLR允许我们将任何类型——Int32、String等——的一个实例作为异常抛出。但实际上,微软定义了System.Exception类型,并规定所有和CLS兼容的编程语言都必须能够抛出并捕获那些继承自System.Exception的异常类型。继承自System.Exception的异常类型被认为是与CLS兼容的。C#和其它许多语言都只允许代转载 2014-08-12 09:06:25 · 597 阅读 · 0 评论 -
struct class interface abstract
1、struct与class区别 结构体是一种值类型,而类是引用类型比较内容结构类构造函数支持(不能自定义,默认提供,作用是将所有的数据成员置零)支持(能自定义)析构函数不支持支持变量初始化转载 2014-12-05 23:34:25 · 850 阅读 · 0 评论 -
c# new的用法
在 C# 中,new 关键字可用作运算符、修饰符或约束。1)new 运算符:用于创建对象和调用构造函数。这种大家都比较熟悉,没什么好说的了。2)new 修饰符:在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员。3)new 约束:用于在泛型声明中约束可能用作类型参数的参数的类型。 一、new 运算符 1.用于创建对象和调用构造函数 例:Class_Test MyClass = new转载 2014-12-05 23:23:30 · 1024 阅读 · 0 评论 -
C # 资源释放
便于对文章的开展,需要先明确两个概念。第一个就是很多人用.Net写程序,会谈到托管这个概念。那么.Net所指的资源托管到底是什么意思,是相对于所有资源,还是只限于某一方面资源?很多人对此不是很了解,其实 .Net 所指的托管只是针对内存这一个方面,并不是对于所有的资源;因此对于 Stream ,数据库的连接, GDI+ 的相关对象,还有 Com 对象等等,这些资源并不是受到 .Net 管理而统转载 2014-11-27 13:22:22 · 2486 阅读 · 0 评论 -
索引器
索引器索引器类似于属性,不同之处在于它们的get访问器采用参数。要声明类或结构上的索引器,使用this关键字。示例:转载 2014-08-18 10:40:18 · 566 阅读 · 0 评论 -
编码格式-Ascii、Default、Unicode、BigEndianUnicode、UTF7、UTF8
....转载 2014-08-15 10:10:02 · 6993 阅读 · 0 评论 -
创建了对嵌入的互操作程序集间接引用,无法嵌入互操作类型
由于程序集“e:\01 北路\01 项目\17 矿用人行车急停系统\客户端程序认证版\ScramVoiceAlarmClient\bin\Debug\AcNetUtils.dll”创建了对嵌入互操作程序集“e:\01 北路\01 项目\17 矿用人行车急停系统\客户端程序认证版\ScramVoiceAlarmClient\bin\Debug\Interop.AcReport.dll”的间接转载 2014-08-14 14:33:31 · 11683 阅读 · 0 评论 -
匿名委托 Invoke,Predicate<T> 委托
1、匿名方法 //用匿名方法定义委托 class Program { delegate string MyDelagate(string val); static void Main(string[] args) { string str1 = " 匿名方法外部 ";转载 2014-08-13 10:08:31 · 4835 阅读 · 0 评论 -
使用 IntelliTrace(智能跟踪) 调试应用程序
1、工具--选项-IntelliTrace转载 2014-08-21 15:29:24 · 14508 阅读 · 1 评论 -
List 转换成字符串
很多时候开发中会用到把 List 的内容拼接成以逗号分隔的字符串的形式,一直习惯了直接拼,今天才知道了更简洁的办法。这需要用到 String.Join 方法Join(String, String[]) 串联字符串数组的所有元素,其中在每个元素之间使用指定的分隔符。 List zz = new List(); zz.Add("转载 2012-08-27 10:32:53 · 650 阅读 · 0 评论 -
C#的String.Split 方法
String.Split 方法有6个重载函数: 程序代码1) public string[] Split(params char[] separator)2) public string[] Split(char[] separator, int count)3) public string[] Split(char[] separator, StringSplitOp转载 2012-03-21 13:17:14 · 577 阅读 · 0 评论 -
string split函数
public static string[] MessageSp(string strData, char splitChartemp) { //2012-3-21修改,增加半角全角字符都可以分隔 char[] splitChar = new char[2]; splitChar[0] = splitCharte原创 2012-03-21 13:53:29 · 775 阅读 · 0 评论 -
可访问性不一致
可访问性不一致: 参数类型“parameter type”比方法“member method”的访问性低返回类型和方法的形参表中引用的各个类型必须至少具有和方法本身相同的可访问性可访问约束请参看:ms-help://MS.MSDNQTR.2003FEB.2052/csspec/html/vclrfcsharpspec_3_5_4.htmusing System;class Clas转载 2012-05-29 21:22:50 · 8356 阅读 · 0 评论 -
二、十、十六进制转换
string str2,str10,str16; int i2, i10; str2 = "1010"; //二进制字符串到十进制 i2 = Convert.ToInt32(str2, 2); //结果10 //二进制字符串到十六进制原创 2012-06-01 23:16:52 · 727 阅读 · 0 评论 -
判断字符串为空大全
Length法:bool isEmpty1 = (str != null && str.Length == 0); Empty法:bool isEmpty2 = (str == String.Empty); General法:bool isEmpty3 = (str == ""); string.IsNullOrEmpty法:bool isEmpty4 = string转载 2012-02-08 16:39:07 · 2653 阅读 · 0 评论 -
net中异步执行(一)
http://hi.baidu.com/maple0015/blog/item/7a11ed50f39a4f65853524ee.html在写程序的过程中,我们可能会需要对某些功能实现异步操作,比如记录调用日志等。提到异步,我们最容易想到的就是多线程:我们可以启动另外一个线程,把一部分工作交给另外一个线程去执行,而当前线程继续去做一些更加急迫的事情。这里的“把一部分工作交给另外转载 2012-04-17 14:18:16 · 2097 阅读 · 0 评论 -
进制转换,类型转换
//十六进制字符串转换为十进制 string str = "0c"; int i = int.Parse(str, System.Globalization.NumberStyles.HexNumber); //输出i=12 i = Convert.ToInt32(str, 16); // //输出i=12原创 2012-06-01 22:00:35 · 570 阅读 · 0 评论 -
C#多线程之二:ManualResetEvent和AutoResetEvent
初次体验 ManualResetEvent和AutoResetEvent主要负责多线程编程中的线程同步;以下一段是引述网上和MSDN的解析: 在.Net多线程编程中,AutoResetEvent和ManualResetEvent这两个类经常用到, 他们的用法很类似,但也有区别。Set方法将信号置为发送状态,当信号处于发送状态时,该线程会得到信号, 继续向下执行Reset方法将信号置转载 2012-06-05 14:05:13 · 1054 阅读 · 0 评论 -
在comPort发送事件中获取返回数据
/// 协议类 public class Protocol { public Protocol() { m_Port = new System.IO.Ports.SerialPort(); m_Port.DataReceived += new原创 2012-06-05 15:16:24 · 1136 阅读 · 0 评论 -
日期格式字符串,string.Format
string s = ""; DateTime dt = DateTime.Now; s = dt.GetDateTimeFormats('s')[0].ToString();// s = string.Format("{0:yyyy-MM-dd HH:mm:ss ffff}", dt); //2012-03-2原创 2012-03-14 12:56:14 · 929 阅读 · 0 评论 -
C# 多线程之一:信号量Semaphore
Semaphore的理解通过使用一个计数器对共享资源进行访问控制,Semaphore构造器需要提供初始化的计数器(信号量)大小以及最大的计数器大小访问共享资源时,程序首先申请一个向Semaphore申请一个许可证,Semaphore的许可证计数器相应的减一,当计数器为0时,其他申请该信号量许可证的线程将被堵赛,直到先前已经申请到许可证的线程释放他占用的许可证让计数器加一,这样最近去申请许可转载 2012-06-05 14:04:24 · 763 阅读 · 0 评论 -
Control.Invoke 方法 (Delegate, Object[]) ,执行委托
在拥有控件的基础窗口句柄的线程上,用指定的参数列表执行指定委托。参数method类型:System..::.Delegate一个方法委托,它采用的参数的数量和类型与 args 参数中所包含的相同。args类型:arraySystem..::.Object>[]()[]作为指定方法的参数传递的对象数组。如果此方法没有参数,该参数可以是 nullNothingnullptr原创 2011-12-13 22:15:08 · 1576 阅读 · 0 评论 -
C# typeof()实例详解
C# typeof()实例详解typeof(C# 参考)用于获取类型的 System.Type 对象。typeof 表达式采用以下形式:System.Type type = typeof(int); 备注若要获取表达式的运行时类型,可以使用 .NET Framework 方法 GetType,如下所示:转载 2012-01-09 16:12:52 · 1331 阅读 · 0 评论 -
Marshal.SizeOf和sizeof的区别
sizeof在非Unsafe环境下只能用于预定义的一系列类型,如Int,Short等等。而在Unsafe环境下,sizeof可以被用于值类型,但是值类型中不可以有引用类型,否则C#编译器会报错:error CS0208: Cannot take the address of, get the size of, or declare a pointer to a managed type ('S转载 2012-01-09 16:11:22 · 1511 阅读 · 0 评论 -
ServiceContract,OperationContract
代码如下 [ServiceContract] //服务协定定义using System.ServiceModel; public interface IInterface1 { [OperationContract] //要公开的服务方法 string Function1(int value); }在c#中,“[...]”这个叫做Attribute,转载 2012-02-23 10:20:58 · 8722 阅读 · 1 评论 -
为什么不要 "lock(this)" ?
一. 为什么要lock,lock了什么?当我们使用线程的时候,效率最高的方式当然是异步,即各个线程同时运行,其间不相互依赖和等待。但当不同的线程都需要访问某个资源的时候,就需要同步机制了,也就是说当对同一个资源进行读写的时候,我们要使该资源在同一时刻只能被一个线程操作,以确保每个操作都是有效即时的,也即保证其操作的原子性。lock是C#中最常用的同步方式,格式为lock(objectA转载 2012-02-08 16:51:03 · 5136 阅读 · 0 评论 -
EventHandler,预定义的委托
EventHandler 是一个预定义的委托专用于表示不生成数据的事件的事件处理程序方法。如果事件生成数据,则必须提供自己的自定义事件数据类型,并且必须要么创建一个委托,其中第二个参数的类型为自定义类型,要么使用泛型EventHandler(Of(TEventArgs>)>) 委托类并用自定义类型替代泛型类型参数。public EventHander( Object object,原创 2011-12-13 21:46:35 · 1081 阅读 · 0 评论 -
C#中.tostring(X2)的用法
C#中.tostring(X2)的用法X 十六进制 ,X是大写,x是小写2 每次都是两位数比如 0x0A 如果没有2,就只会输出0xA 如果两个数10和26,正常情况十六进制显示0xA、0x1A,这样看起来不整齐,为了好看,我们可以指定X2,这样显示出来就是:0x0A、0x1A。转载 2011-12-13 15:16:52 · 2888 阅读 · 0 评论 -
线程间的操作无效
跨线程访问界面控件时,访问下窗体的 InvokeRequired 属性,如果为false就可以直接访问,否则就是跨线程访问;此时,创建一个delegate,并通过Invoke() 来调用它. private void setTimer(string str) { if (this.frm.InvokeRequired) //控件是否跨线原创 2012-05-29 09:46:02 · 756 阅读 · 0 评论 -
哈希表Hashtable与字典表Dictionary<K,V>的比较。
哈希表,名-值对。类似于字典(比数组更强大)。哈希表是经过优化的,访问下标的对象先散列过。如果以任意类型键值访问其中元素会快于其他集合。GetHashCode()方法返回一个int型数据,使用这个键的值生成该int型数据。哈希表获取这个值最后返回一个索引,表示带有给定散列的数据项在字典中存储的位置。Hashtable 和 Dictionary 类型 1:单线程程序中推荐使用转载 2014-08-18 10:39:18 · 19285 阅读 · 2 评论