小编Hen*_*man的帖子

冒泡排序的最佳案例

我想知道冒泡排序的最佳情况是什么?例如,可能存在这样的情况,其中可能没有交换最后2次传球.我正在使用C语言编写程序.假设我有一个包含5个元素的数组,并且我将元素作为1 2 5 4 3,那么在最后2个传递中没有变化?

algorithm bubble-sort

5
推荐指数
4
解决办法
4万
查看次数

Excel.Range.Find方法

我正在使用Excel互操作对象,并尝试通过以下方法在指定范围内查找日期

Excel.Range rngFind = WS.get_Range(strFromRange, strToRange).Find(strFind, Type.Missing,
                Excel.XlFindLookIn.xlFormulas, Excel.XlLookAt.xlPart, Excel.XlSearchOrder.xlByRows,
                Excel.XlSearchDirection.xlNext, false, false, false);
Run Code Online (Sandbox Code Playgroud)

但是我总是将rngFind设置为null我的strFind =“ Sep-08”我尝试同时使用Excel.XlFindLookIn.xlFormulas和Excel.XlFindLookIn.xlValues

我的excel文件看起来像这样

Sep-08  Oct-08  Nov-08  Dec-08  Jan-09  Feb-09  Mar-09  Apr-09  May-09  Jun-09  Jul-09
Run Code Online (Sandbox Code Playgroud)

当我单击Sep-08单元格时,我进入9/1/2008Excel的公式字段,我也曾尝试搜索9/1/2008,但根据RegionalSettings Date格式,它因系统而异...

请帮我。基本上我正在做以获得查找字符串的单元格地址

c# interop ms-office

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

遍历页面上的所有用户控件

想要遍历页面上存在的所有用户控件并获取其ID.我该怎么做?

c# asp.net

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

C#4的协方差是否支持泛型的嵌套?

我不明白为什么'x'在下面会转换,但'y'和'z'不会.

var list = new List<List<int>>();

IEnumerable<List<int>> x = list;
List<IEnumerable<int>> y = list;
IEnumerable<IEnumerable<int>> z = list;
Run Code Online (Sandbox Code Playgroud)

新的协方差特征是否不适用于泛型的泛型,或者我做错了什么?(我想避免使用.Cast <>来使y和z工作.)

.net c# covariance contravariance c#-4.0

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

如何在C#中将LPCWSTR编组为String?

我正在尝试为以下方法定义P/Invoke签名(在中定义propsys.h)

PSSTDAPI PSRegisterPropertySchema(
    __in PCWSTR pszPath);
Run Code Online (Sandbox Code Playgroud)

我看到的WinNT.h那PCWSTR是它的别名LPCWSTR为

typedef __nullterminated CONST WCHAR *LPCWSTR, *PCWSTR;
Run Code Online (Sandbox Code Playgroud)

这PSSTDAPI是别的HRESULT

那么该PSRegisterPropertySchema方法的P/Invoke签名应该如何呢?

c# pinvoke winapi

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

绑定WPF DataGrid文本列的前景

我尝试构建一个DataGrid,并且我想将TextColums的Foreground属性之一绑定到Date,如果Date是过去的话,它将变为红色。

这里是XAML:

<toolkit:DataGridTextColumn 
   Binding="{Binding Path=Prüfdatum, Converter={StaticResource TimestampToDateConverter}}"
   Header="Prüfdatum" 
   Foreground="{Binding Path=Prüfdatum, Converter={StaticResource TimestampToColorConverter},
   ConverterParameter=Prüfdatum}" />
Run Code Online (Sandbox Code Playgroud)

这是我的转换器:

    class TimestampToColorConverter: IValueConverter
{
    #region IValueConverter Member

    public object Convert(object value, Type targetType, 
           object parameter, System.Globalization.CultureInfo culture)
    {
        string Datum = value.ToString();
        int year = System.Convert.ToInt32(Datum.Substring(6, 4));
        int month = System.Convert.ToInt32(Datum.Substring(3, 2));
        int day = System.Convert.ToInt32(Datum.Substring(0, 2));
        int hour = System.Convert.ToInt32(Datum.Substring(11, 2));
        int minute = System.Convert.ToInt32(Datum.Substring(14, 2));
        int second = System.Convert.ToInt32(Datum.Substring(17, 2));
        DateTime Time = new DateTime(year, month, day, hour, minute, second);
        if (Time < …
Run Code Online (Sandbox Code Playgroud)

c# wpf binding datagrid converter

5
推荐指数
2
解决办法
6286
查看次数

如何使用按钮事件在 C# 中切换表单

我这里有一些代码:

private void button1_Click(object sender, EventArgs e)
{
    Application.Run(new Form3());
}
Run Code Online (Sandbox Code Playgroud)

虽然我认为这不是您要更改表单的方式,但当我运行它时,它抛出了一个错误,指出:

在单个线程上启动第二个消息循环不是有效操作

.net c# winforms

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

UDP文件传输 - 是的,UDP

我需要创建一个UDP文件传输系统.我知道TCP是有保证的,而且更可靠,但我需要在不同位置之间传输大文件,我认为这个项目的速度优势超过了使用TCP的好处.我刚刚开始这个项目,但是如果有人之前做过这样的话,我想要一些指导.我将写双方(客户端和服务器),所以我不需要担心其他产品的功能限制.

简而言之,我需要:

  • 获取大文件并以块的形式发送它们
  • 能够限制客户端的带宽
  • 创建某种数据包编号系统,用于错误,重新传输和通过服务器上的块组装文件(是的,我们从TCP免费获得的所有东西:-)
  • 可配置的数据报大小 - 我认为一些防火墙会因为太大而抱怨?
  • 还有其他我可能遗失的东西

我正在使用UdpClient开始这个旅程,并希望用C#编写这个应用程序.任何智慧的话(除了使用TCP)?


它取得了巨大的成功.我们过去常常使用RocketStream.com,但他们将产品卖给了另一家公司,仅供内部使用.我们通常获得比FTP或原始TCP字节传输快30倍的速度.

c# udp file-transfer

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

在我的机器上 Stopwatch.IsHighResolution == false 。为什么?

抱歉,这始终是事实!已编辑...


我刚刚意识到 Stopwatch.IsHighResolution 在我的机器中返回 false。为什么?需要什么才能返回 true?什么样的硬件?MSDN对此不多说。

机器配置:Win 7 x64;i7 930;3x2 GB(三通道);高清 500 GB 7200 转;能源配置 CPU @ 100%


根据要求:VS 2010;.NET 4.0;赢得表格申请;调试模式(我现在将在发布中测试)


在发布模式下它返回true!:) 好吧,抱歉各位,实际上它总是正确的(调试和发布)。

c# timer stopwatch

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

将C char [] []数组元素编组为C#

我看了看,尝试了一切我能想到或已经找到的建议.我仍然没有运气获得我需要的数据.

我正在使用第三方DLL,我认为它是用C语言编写的.我需要在C#中访问此DLL中的函数.在大多数情况下,我有这个工作,除了一个功能.我遇到问题的函数有以下标题:

uint queryNumOfServers(USHORT *NumOfServers, char ServerNames[8][16]);
Run Code Online (Sandbox Code Playgroud)

我在C#应用程序中声明了以下内容

[DllImport("client.dll", CharSet=CharSet.Ansi]
public static extern uint queryNumOfServers(ref short numberofServer, StringBuilder serverNames);
Run Code Online (Sandbox Code Playgroud)

我这称之为:

StringBuilder serverNames = new StringBuilder(128);
short numServers = -1;
queryNumberOfServers(ref numServers, serverNames);
Run Code Online (Sandbox Code Playgroud)

问题是,虽然numberOfServers返回等于4,但我只在serverNames中获得一个名称.我在一个小C程序中测试了上面的C函数.我得到了numberOfServer = 4,但我还得到了4个名字.


我试过以下但没有成功:

[DllImport("client.dll", CharSet=charSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern uint queryNumOfServers(ref short numberOfServer,[MarshalAs(UnmanagedType.LPStr)] string serverNames);
Run Code Online (Sandbox Code Playgroud)

称之为

string serverNames = new string('\0', 128);
queryNumOfServers(ref numServers, serverNames);
Run Code Online (Sandbox Code Playgroud)

使用此选项对serverNames没有任何更改.


开发环境是Visual Studio 2008.

c c# c++ interop marshalling

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