Collection 泛型类 数组元元修改可通知
ObservableCollection(Of T) 类 表示一个动态数据集合,在添加项、移除项或刷新整个列表时,此集合将提供通知。
OperationBase.RaisePropertyChanged 方法
protected void RaisePropertyChanged ( string propertyName )
C#中静态成员可以保证是线程安全的?
返回byte[]: var carriageReturnBytes = encoding.GetBytes(new[] { 'r', 'n' });
某lamba示例:Answers.Where(a => a.QuestionText == "Voice Question").Single().QuestionType
创建一个IEnumerable<SurveyTemplate>对象: new[] { new SurveyTemplate() };
返回一个IObservable<IEnumerable<xxx>>对象: IEnumerable<xxx>.ToObservable()
测试中
using Microsoft.Silverlight.Testing;
using Microsoft.VisualStudio.TestTools.UnitTesting;
[TestClass]
类
[TestMethod]
方法
查询对象的成员:
static public Byte[] StructToBytes(Object obj)
{
List<pair> hs = new List<pair>();
int count = 0;
foreach (FieldInfo fi in obj.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance))
{
if (ts.Keys.Contains(fi.FieldType))
{
pair temp = tg[fi.FieldType](fi, obj);
//if (temp.isarray)//byte[] 要用一个UInt16的整数来记录数组的长度
//{
// count += 2;
//}
count += temp.data.Length;
hs.Add(temp);
}
}
动态根据类型创建实例:
static int SetStructBytes(FieldInfo fi, Object o, byte[] data, int offset)
{
Type t = fi.FieldType;
object o2 = Activator.CreateInstance(t);
int ret = BytesToStruct(data, o2, offset) - offset;
fi.SetValue(o2, t);
return ret;
}
?号,来源
在C# 中有个较为重要,而常被一些人忽视的符号—— 问号(? )。在这里整理一下它在C# 的几种情况:
1. 可空类型修饰符“T?” : 可空类型的基础类型可以是任何非可空值类型或任何具有struct 约束的类型参数,但不能是可空类型或引用类型。例如:int? 代表是可空的整形,而int?? 则是无效类型。即可空类型可以表示其基础类型的所有值和一个额外的空值。语法T? 是System.Nullable<T> 的缩写形式。可空类型具有一个HasValue 的bool 类型只读属性,当可空类型实例的该属性为true 时,则表示该实例是非空实例,包含一个已知值Value;HasValue 为false 时,访问Value 属性将导致System.InvalidOperationException 。可空类型T? 具有一个类型为T 的单个参数的公共构造函数,如new int?(123) 将获得一个值为123 的int? 类型实例。从T? 到由T 实现的任何接口都存在装箱转换,并且从由T 实现的任何接口都存在到T? 的拆箱转换。但是任何情况下可空类型都不满足接口约束,即使基础类型实现了该特定接口。
2. 条件运算符“x ? y : z” : “x ? y : z” 的意思大部分程序员应该都熟悉,稍微啰嗦一下:) 如果表达式x 为true ,则计算y ;如果x 为false ,则计算z 。省却if{}else{} 的简单形式了。
3. 空合并运算符“??” : 该运算符是在泛型出现后,C# 词法语法中新增加的标记,同时出现的还有一个“::” (命名空间别名限定符)。形式为“a??b” 的空合并表达式要求a 为可空类型或引用类型 。如果a 为非空则表达式“a??b” 返回的结果为a ;否则返回b 。空合并运算符为 右 结合运算符 ,即操作时从右向左进行组合的。如,“a??b??c” 的形式按“a??(bb??cc)” 计算。
常见问题
问题: 错误 CS0234: 命名空间“Microsoft”中不存在类型或命名空间名称“Silverlight”。是否缺少程序集引用?
解决:
phone7平台:C:Program FilesMicrosoft SDKsSilverlightv3.0ToolkitNov09Bin
新错误:
C:WindowsMicrosoft.NETFrameworkv4.0.30319Microsoft.Common.targets(1490,5): warning MSB3268: 未能解析主引用“Microsoft.Silverlight.Testing, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL”,因为它对框架程序集“System.Windows.Browser, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e”有间接依赖关系,而在当前目标框架中未能解析该程序集。“Silverlight,Version=v4.0,Profile=WindowsPhone71”。若要解决此问题,请移除引用“Microsoft.Silverlight.Testing, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL”,或将应用程序的目标重新指向包含“System.Windows.Browser, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e”的框架版本。
silverlight4平台:C:Program FilesMicrosoft SDKsSilverlightv4.0ToolkitApr10Testing
新错误:
Could not load type 'Microsoft.Silverlight.Testing.UnitTestSettings' from assembly 'Microsoft.Silverlight.Testing, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35'.