问题列表 - 第29611页

构造函数中的SortedSet <T>和匿名IComparer <T>不起作用

为什么匿名函数作为方法的参数而不是构造函数参数?


如果我创建了一个List<string>,它有一个带有以下签名的Sort方法:

public void Sort(IComparer<T> comparer)
Run Code Online (Sandbox Code Playgroud)

以下工作地点:

List<string> list = new List<string>();
list.Sort( (a,b) => a.CompareTo(b) );
Run Code Online (Sandbox Code Playgroud)

SortedSet有一个具有类似签名的构造函数:

public SortedSet(IComparer<T> comparer)
Run Code Online (Sandbox Code Playgroud)

但是在构造函数中使用匿名函数时会失败.以下内容无效:

SortedSet<string> set = new SortedSet<string>( (a, b) => a.CompareTo(b) );
Run Code Online (Sandbox Code Playgroud)

创建排序类可以正常工作:

public class MyComparer : IComparer<string>
{
    public int Compare(string a, string b)
    { return a.CompareTo(b); }
}

SortedSet<string> set = new SortedSet<string>( new MyComparer() );
Run Code Online (Sandbox Code Playgroud)

.net c# constructor anonymous-function

17
推荐指数
3
解决办法
9788
查看次数

将打开文件对话框添加到dll库

我的应用程序中的几个表单使用相同的"打开文件对话框".我需要每次复制"打开文件对话框"及其设置的代码.我想添加"打开文件对话框"来分隔DLL库以避免重复.我该怎么做 ?

WinForms,Visual Studio 2008.

c# winforms

3
推荐指数
1
解决办法
4149
查看次数

如何在Windows控制台上输出Unicode字符串

关于这个问题已经有一些问题了.我认为我的问题有点不同,因为我没有实际问题,我只是在考虑学术兴趣.我知道Windows的UTF-16实现有时与Unicode标准(例如整理)相矛盾,或者更接近旧UCS-2而不是UTF-16,但我会在这里保留"UTF-16"术语,原因是简单.

背景:在Windows中,一切都是UTF-16.无论你是在处理内核,图形子系统,文件系统还是其他什么,你都要传递UTF-16字符串.Unix意义上没有语言环境或字符集.为了与中世纪版本的Windows兼容,有一个名为"codepages"的东西已经过时但仍然受到支持.AFAIK,只有一个正确且非过时的函数可以将字符串写入控制台,即WriteConsoleW采用UTF-16字符串.此外,类似的讨论也适用于输入流,我也会忽略它.

但是,我认为这代表了Windows API中的一个设计缺陷:有一个通用函数可以用来写入所有被调用的流对象(文件,管道,控制台......)WriteFile,但是这个函数是面向字节的,不是接受UTF-16字符串.文档建议使用WriteConsoleW控制台输出,这是面向文本的,和WriteFile对于其他一切,这是面向字节的.由于控制台流和文件对象都由内核对象句柄表示,并且控制台流可以重定向,因此必须为标准输出流的每次写入调用一个函数,以检查句柄是表示控制台流还是文件,从而破坏多态性.OTOH,我认为Windows在文本字符串和原始字节之间的分离(在许多其他系统中镜像,如Java或Python)在概念上优于Unix的char*方法,忽略编码并且不区分字符串和字节数组.

所以我的问题是:在这种情况下该怎么办?为什么即使在微软自己的库中也没有解决这个问题?.NET Framework和C和C++库似乎都遵循过时的代码页模型.您将如何设计Windows API或应用程序框架来规避此问题?

我认为一般问题(不容易解决)是所有库都假设所有流都是面向字节的,并在此基础上实现面向文本的流.但是,我们看到Windows在操作系统级别上确实有特殊的面向文本的流,并且库无法处理这个问题.因此,无论如何,我们必须对所有标准库进行重大更改.一种快速而肮脏的方法是将控制台视为一种特殊的面向字节的流,只接受一种编码.这仍然要求必须绕过C和C++标准库,因为它们没有实现WriteFile/ WriteConsoleWswitch.那是对的吗?

windows unicode console

12
推荐指数
1
解决办法
6029
查看次数

阻止用户对任何网页使用键盘的"Print Scrn"/"Printscreen"键

我目前正在做一个项目,我需要阻止用户拍摄任何网页的快照,为此他可以使用任何普通键盘中的"Print Scrn"/"Printscreen"键.

我一直试图找到它的解决方案,但是徒劳无功.如果可能的话,我需要考虑Firefox浏览器的" Screengrab "插件,也可以将其停止.

非常感谢任何帮助,我正在为我的项目使用PHP(作为服务器端语言)和jQuery.

html javascript webpage-screenshot

52
推荐指数
6
解决办法
6万
查看次数

如何移动QSplitter?

假设我有一个窗口,其中有2个水平sppliters和一个按钮.如何通过单击按钮上/下移动分离器?

c++ qt qsplitter

9
推荐指数
1
解决办法
4134
查看次数

TSQL使用transaction创建触发器并尝试catch块

我对触发器中的事务有一些疑问,但我还没有找到答案.

CREATE TRIGGER A_AI ON A
AFTER INSERT AS

    BEGIN TRY --is the try block 1 transaction ? or do I have to begin the transaction?

        --BEGIN TRAN: may I start the transaction like this?
        -- SOME DANGEROUS OPERATIONS

        COMMIT --has this sense here?
    END TRY
    BEGIN CATCH --silent catch no rasing errors.
        ROLLBACK TRANSACTION -- does it work without BEGIN TRANSACTION? if so, is it the whole try block?
    END CATCH

GO
Run Code Online (Sandbox Code Playgroud)

t-sql triggers transactions try-catch

3
推荐指数
1
解决办法
3083
查看次数

强密码正则表达式

我需要强大的密码验证正则表达式

Special Characters - Not Allowed
Spaces - Not Allowed
Numeric Character - At least one character
At least one Capital Letter 
Minimum and Maximum Length of field - 6 to 12 Characters
Repetitive Characters - Allowed only two repetitive characters
Run Code Online (Sandbox Code Playgroud)

我的正则表达式^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s)(?=(?:(\w)(?!\1{2}))+).{6,12}$ 但它忽略了特殊字符(在哪里添加?)

请帮忙!

c# regex

7
推荐指数
2
解决办法
2万
查看次数

如何在jsp中创建绝对URL?

如果有<c:url value="/article"/>一个jsp,我实际上想要它生产http://mysite.com/context/article.有没有简单的方法来实现这一点?

url jsp jstl

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

获取oracle db中最后插入记录的ID

我想检索具有自动递增id列的新插入记录的id(使用序列和触发器方法).这样做的标准方法是什么?

oracle

25
推荐指数
1
解决办法
2万
查看次数

如何将输入文本框样式更改为行?

在我的形式我有三个输入字段名称,电子邮件,移动,但我想更改输入文本框像 -

name :  _____________  
email:  _____________  
mob  :  _____________  
Run Code Online (Sandbox Code Playgroud)

html css textbox

9
推荐指数
1
解决办法
3万
查看次数