小编Tod*_* Li的帖子

.Net框架中是否存在系统错误代码的枚举?

我有一个库函数返回GetLastError代码(像这样的东西).我需要将它们与特定的错误进行比较,比如ERROR_INVALID_HANDLE.但是我自己定义常量并不舒服.所以问题是,为此目的是否有预定义的枚举?

.net pinvoke

11
推荐指数
2
解决办法
3012
查看次数

为什么OrdinalIgnoreCase和InvariantCultureIgnoreCase会返回不同的结果?

当涉及到仅限英语的字符串时,我想StringComparison.OrdinalIgnoreCaseStringComparison.InvariantCultureIgnoreCase做同样的工作.但是,我正在使用以下代码中的情况并非如此:

// Returns 0
string.Compare("877495169FA05B9D8639A0EBC42022338F7D2324","?877495169fa05b9d8639a0ebc42022338f7d2324", StringComparison.InvariantCultureIgnoreCase)

// Returns -1
string.Compare("877495169FA05B9D8639A0EBC42022338F7D2324","?877495169fa05b9d8639a0ebc42022338f7d2324", StringComparison.OrdinalIgnoreCase)
Run Code Online (Sandbox Code Playgroud)

有什么特别的原因吗?

c# string-comparison

10
推荐指数
1
解决办法
6485
查看次数

我应该如何强制加载引用的程序集?

我有一个第三方库,当我调用他们的代码时需要加载程序集A. 该程序集通常安装在GAC中,因此我有几个选项可以加载它:

  1. 我可以明确地打电话Assembly.Load().然而,这需要全名,我觉得我的程序中的硬编码不舒服.
  2. 我可以明确地打电话Assembly.LoadWithPartialName().那当然是一个过时的API,当然我在版本控制中失去控制感觉不舒服.
  3. 我可以在我的Visual Studio项目文件中引用程序集,所以我总是得到我构建的版本.但是,除非我在该程序集中创建一个虚拟对象,否则这将无效.如果不这样做,C#编译器就会忽略它.
  4. 如果我调用Assembly.GetReferencedAssemblies并强制加载匹配的问题,同样的问题.即使我把它放在引用列表中,C#编译器也不会引用我的程序集.

现在我正在做的是调用typeof(A.Foo).Assembly.GetName()并忽略返回值.有没有更好的方法呢?

.net c#

7
推荐指数
1
解决办法
3113
查看次数

有没有更快的方法来检测游戏功能?

我有一场比赛.屏幕上将随机显示5种符号.如果屏幕上有3个或更多相同符号,则玩家赢得一些钱.

举例来说,如果我有符号A,B,C,D,E,和F.

F 可以替代任何其他种类的符号(通配符).

因此,当AAABCAFABB在屏幕上出现,这意味着我赢得了3-A胜利.如果AAFBB屏幕上出现,这意味着我赢得既是一个3-A3-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 & …

c algorithm

5
推荐指数
1
解决办法
223
查看次数

将混凝土类型浇筑成通用类型?

我正在尝试编译以下代码:

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)

c# generics

4
推荐指数
1
解决办法
2472
查看次数

标签 统计

c# ×3

.net ×2

algorithm ×1

c ×1

generics ×1

pinvoke ×1

string-comparison ×1