我有一个库函数返回GetLastError代码(像这样的东西).我需要将它们与特定的错误进行比较,比如ERROR_INVALID_HANDLE.但是我自己定义常量并不舒服.所以问题是,为此目的是否有预定义的枚举?
当涉及到仅限英语的字符串时,我想StringComparison.OrdinalIgnoreCase并StringComparison.InvariantCultureIgnoreCase做同样的工作.但是,我正在使用以下代码中的情况并非如此:
// Returns 0
string.Compare("877495169FA05B9D8639A0EBC42022338F7D2324","?877495169fa05b9d8639a0ebc42022338f7d2324", StringComparison.InvariantCultureIgnoreCase)
// Returns -1
string.Compare("877495169FA05B9D8639A0EBC42022338F7D2324","?877495169fa05b9d8639a0ebc42022338f7d2324", StringComparison.OrdinalIgnoreCase)
Run Code Online (Sandbox Code Playgroud)
有什么特别的原因吗?
我有一个第三方库,当我调用他们的代码时需要加载程序集A. 该程序集通常安装在GAC中,因此我有几个选项可以加载它:
Assembly.Load().然而,这需要全名,我觉得我的程序中的硬编码不舒服.Assembly.LoadWithPartialName().那当然是一个过时的API,当然我在版本控制中失去控制感觉不舒服.Assembly.GetReferencedAssemblies并强制加载匹配的问题,同样的问题.即使我把它放在引用列表中,C#编译器也不会引用我的程序集.现在我正在做的是调用typeof(A.Foo).Assembly.GetName()并忽略返回值.有没有更好的方法呢?
我有一场比赛.屏幕上将随机显示5种符号.如果屏幕上有3个或更多相同符号,则玩家赢得一些钱.
举例来说,如果我有符号A,B,C,D,E,和F.
F 可以替代任何其他种类的符号(通配符).
因此,当AAABC或AFABB在屏幕上出现,这意味着我赢得了3-A胜利.如果AAFBB屏幕上出现,这意味着我赢得既是一个3-A和3-B赢.
现在我有一个关于屏幕上显示内容的数组; 我需要找到一种足够快的方法来检测游戏结果.
我现在有这个方法:
我给一个代码,每一个符号:A -> 1,B -> 2,C -> 3,D -> 4,E -> 5,F -> 0xF.
就像我有一个数组:{A,B,C,D,E}我将它们转换为屏幕代码:0x12345.
然后我列出了获胜面具:
0x11111
0x22222
0x33333
0x44444
0x55555
0x11110
0x01111
0x22220
...
0x00111
0x01110
0x11100
Run Code Online (Sandbox Code Playgroud)
我使用屏幕代码,做&每个掩码代码,就像0x111f1 & …
我正在尝试编译以下代码:
public class BaseRequest<TResponse> where TResponse : BaseResponse {}
public class BaseResponse {}
public class FooRequest : BaseRequest<FooResponse> {}
public class FooResponse : BaseResponse {}
...
public TResponse MakeRequest<TResponse>(BaseRequest<TResponse> request)
where TResponse : BaseResponse
{
}
Run Code Online (Sandbox Code Playgroud)
我希望我可以调用MakeRequest(new FooRequest())并获取返回值FooResponse.被调用者不必知道FooRequest并可能将其传递给另一个处理程序.签名工作正常,但我无法实现该MakeRequest方法.如果我实现它像:
public TResponse MakeRequest<TResponse>(BaseRequest<TResponse> request)
where TResponse : BaseResponse
{
FooRequest fooRequest = request as FooRequest;
if (fooRequest != null) // if I can handle the request, handle it
{
return new FooResponse(...); // *** …Run Code Online (Sandbox Code Playgroud)