我只是想知道.NET 2.0中是否有一种方法可以检查字符是否可打印 - 类似于isprint(int)
标准C.
我找到了Char.IsControl(Char)
.
这可以用于此目的吗?
我目前正在研究一些相当古老的C++代码,并经常发现类似的东西
int i;
i = 42;
Run Code Online (Sandbox Code Playgroud)
要么
Object* someObject = NULL;
someObject = new Object();
Run Code Online (Sandbox Code Playgroud)
甚至
Object someObject;
someObject = getTheObject();
Run Code Online (Sandbox Code Playgroud)
我完全理解这段代码的作用,但我真的不知道变量定义和初始化的这种分离是否有用.我搜索了一些解释,但总是最终得到成员初始化列表或者应该定义局部变量的问题.
最后,我不明白为什么有人可能故意编写这段代码.它只是将定义和初始化分成两个后续行并创建开销 - 在最后一种情况下,它使用默认构造函数创建一个对象,仅在下一行中销毁它.
我想知道我是否应该简单地将代码更改为
int i = 42;
Object* someObject = new Object();
Object someObject = getTheObject();
Run Code Online (Sandbox Code Playgroud)
这会导致任何问题吗?
我正在使用MongoDB和官方Java驱动程序(版本2.6.3).我有一个包含购物清单的MongoDB集合.购物清单具有格式
{ "_id" : { "$oid" : "4e2af1f43f8de96494d5271d"} ,
"name" : "default" ,
"items" : [ { "description" : "Cheese" , "quantity" : 1 , "unit" : "kg"} ,
{ "description" : "Water" , "quantity" : 3 , "unit" : "bottle"} ] }
Run Code Online (Sandbox Code Playgroud)
现在我想用方法将新项添加到列表update()
中DBCollection
.但无论我尝试什么,它都行不通,尽管它告诉我
{ "updatedExisting" : true , "n" : 1 , "connectionId" : 63 , "err" : null , "ok" : 1.0}
Run Code Online (Sandbox Code Playgroud)
我的代码执行以下操作:
BasicDBObject updateQuery = new BasicDBObject();
updateQuery.put( "name", "default" );
BasicDBObject updateCommand …
Run Code Online (Sandbox Code Playgroud) 我正在努力实现IEquatable<>
一个类的接口。该类具有Parameter
使用泛型类型的属性。基本上类定义是这样的:
public class MyClass<T> : IEquatable<MyClass<T>>
{
public T Parameter { get; }
...
}
Run Code Online (Sandbox Code Playgroud)
在Equals()
我EqualityComparer<T>.Default.Equals(Parameter, other.Parameter)
用来比较属性的方法中。通常,这可以正常工作 - 只要属性不是集合,例如IEnumerable<T>
. 问题是默认的相等比较器IEnumerable<T>
正在检查引用相等。
显然,您想用它SequenceEqual()
来比较IEnumerable<T>
. 但是要让它运行,你需要指定方法的泛型类型SequenceEqual()
。这是我能得到的最接近的:
var parameterType = typeof(T);
var enumerableType = parameterType.GetInterfaces()
.Where(type => type.IsGenericType && type.GetGenericTypeDefinition() == typeof(IEnumerable<>))
.Select(type => type.GetGenericArguments().First()).FirstOrDefault();
if (enumerableType != null)
{
var castedThis = Convert.ChangeType(Parameter, enumerableType);
var castedOther = Convert.ChangeType(other.Parameter, enumerableType);
var isEqual = castedThis.SequenceEqual(castedOther);
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为Convert.ChangeType() …
我刚刚开始使用WCF服务执行我的第一步,并编写了一个显示从WCF服务检索的数据的WPF应用程序.我将应用程序拆分为两个项目:一个包含(WPF)UI的项目和一个包含WCF服务客户端的第二个项目.
将端点定义从第二个项目的app.config复制到第一个项目的app.config(当然是StartUp项目)后,应用程序正在运行.
但是自从我开始使用WCF服务客户端以来,XAML设计器就不再起作用了.它总是显示异常:
无法在ServiceModel客户端配置部分中找到引用合同"MyContract"的默认端点元素.这可能是因为没有为您的应用程序找到配置文件,或者因为在客户端元素中找不到与此合同匹配的端点元素.
这与我将端点定义复制到另一个app.config文件之前的异常完全相同.所以我猜XAML设计师不使用这种配置.是否有可能解决这种奇怪的行为?如果XAML设计师根本不使用WCF(它不应该做恕我直言)并且只使用一些默认数据,那对我来说没问题.
我已经考虑过使用RhinoMocks 在DesignerMode案例中存根WCF服务客户端,但是对异步WCF调用进行存根并不是最简单的事情.
有任何想法吗?