小编Mat*_*att的帖子

while(k> = 0 && arr [k]> 0)是否安全?

while (k >= 0 && arr[k] > 0) 
Run Code Online (Sandbox Code Playgroud)

安全?

当k在范围内并且arr [k]> 0时它循环.但是如果这是编码的好习惯,我不会这样做.我知道如果我们这样做

while (arr[k] > 0 && k >= 0) 
Run Code Online (Sandbox Code Playgroud)

会是一场灾难.

c# coding-style

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

为什么我不能在扩展方法中用泛型类型变量替换IEnumerable <T>?

我试图使扩展方法更通用以避免冗余(这是一些实际代码的示例,下面的代码只是为了演示问题 - 我有想法使该方法也可用IQueryable<T>).

以下工作正常:

public static class Extensions
{
    public static IEnumerable<T> MySelect1<T, V>(this IEnumerable<T> query, Func<T, V> f)
    {
        // do something, then return IEnumerable<T>
        var result=query.AsEnumerable<T>();
        return result;
    }
    public static IQueryable<T> MySelect1<T, V>(this IQueryable<T> query, Func<T, V> f)
    {
        // do something, then return IQueryable<T>
        var result = query.AsQueryable<T>();
        return result;
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以在LinqPad中使用它(当与Northwind数据库连接时):

var myQuery=(from x in Customers select x);
myQuery.AsEnumerable().MySelect1(d => d.CustomerID).Dump();
myQuery.AsQueryable().MySelect1(d => d.CustomerID).Dump();
Run Code Online (Sandbox Code Playgroud)

现在我想摆脱MySelect1的重复实现,所以我将它重构为:

public static class …
Run Code Online (Sandbox Code Playgroud)

c# generics extension-methods

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

为什么我在写MsgBox时不能使用{0}?

如果我想展示一些东西,console我通常会这样写:Console.Write("Hello{0}", AnyNumber);.

但是,如果我使用Interaction.MsgBox并写入,Interaction.MsgBox("Hello {0}, AnyNumber");我会收到错误,为什么会这样?

我喜欢在编写时使用{0}+(字符串连接)更多的占位符,我认为编写它更容易...

所以我的问题是:为什么我不能在MsgBox中使用占位符,还有其他方法可以使用它们吗?

这是一个如何在MsgBox中使用它的示例:

static void multiplikation(int tal1, int tal2)
{        
    if (tal1*tal2 == 100)
    {
          Interaction.MsgBox("Hello!\nResult:\n" + (tal1 * tal2));
    }
    else
    {
          Interaction.MsgBox("Resultat:\n" + (tal1 * tal2));
    }
}
static void addition(int tal1, int tal2)
{
    if (tal1 + tal2 == 100)
    {
         Console.Write("Hello!\nResult:{0}\n", (tal1 + tal2));
    }
    else
    {
         Console.Write("Resultat:{0}\n", (tal1 + tal2));
    }
}
Run Code Online (Sandbox Code Playgroud)

c#

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

如何访问 Global.ASAX 中 Application_Error 事件的对象属性?

我目前正在为应用程序编写一个带有日志记录的通用错误处理程序,它应该从发送者对象中提取有用的信息。

在问我的问题之前,让我先给你一些背景知识:

我为此目的使用的Global.asax 中Application_Error处理程序定义如下:

protected void Application_Error(Object sender, EventArgs e)
Run Code Online (Sandbox Code Playgroud)

当我在这个方法中设置一个断点时,我通过本地窗口从发送者那里得到了很多有用的信息: Sender_Object_Global.asax

在 type 列中,Visual Studio 建议对象为 type ASP.global_asax,但这似乎是一种人工类型,因为当我尝试将其转换为

var senderInfo = (ASP.global_asax)sender;
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

CS0246:找不到类型或命名空间“ASP”(您是否缺少 using 指令或程序集引用?)


问题:

  1. 事件参数:有没有办法sender转换为合适的类类型,其中包含本地窗口显示的所有信息?(请注意,我不需要调试器显示的静态和非公共成员)
  2. 异常对象:同样,异常对象也可以实现吗?(您可以在excSystem.Exception 类型的屏幕截图中看到,但确切的类型是System.Web.HttpUnhandledException。这可能特别有用,exc.InnerException因为在这里我们获得了有关发生此异常的原因的真实信息。)

        var exc = Server.GetLastError();
        var innerExc = exc.InnerException;
    
    Run Code Online (Sandbox Code Playgroud)

注意我在 Stackoverflow(这里那里)中发现了一些类似的问题,但它们不是重复的,因为它们处理不同的主题。

c# asp.net casting

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

如何"深度"克隆闭源第三方类的属性?

.NET框架的ICloneable接口通常提供了一种支持克隆类实例的方法.

但是如果我有多个第三方类,并且不想单独关注每个属性,那么如何有效地克隆这些类的对象呢?(这些类的源代码不可用).有没有办法使用泛型扩展方法

我需要的是一个深度克隆,它创建一个包含所有属性和(子)对象的精确副本.


示例:假设您要UserQueryLinqPad中克隆对象:

void Main()
{
    UserQuery uc=this;
    var copy=uc.CreateCopy(); // clone it
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是一个CreateCopy()扩展,允许创建一个副本,而不必照顾这个类的细节,因为我没有自己的源UerQuery.

(注意,这UserQuery只是一个示例,用于显示我需要的内容,它也可以是PDF文档类,用户控件类,ADO.NET类或其他任何内容).

.net c# clone class object

0
推荐指数
1
解决办法
1081
查看次数

交换可分数并获得声明的无效错误

我正在开发一个程序,它可以反转所有可以被特定数字整除的给定数字.

例如:input ="13694097"可分数= 3; 输入中可被3整除的数字为:3,6,9,9.因此反向应为9,9,6,3.如果我们替换当前数组中的那个,那么我们得到ouput ="19964037"

这是程序的代码.我正在尝试构建prorgram,但我一直得到以下错误:

#include <iostream>

using namespace std;

int convert_to_int(char s) 
{
    return s - '0';   
}

void reverse_string(char *string, int length, int number) 
{

    char *start = string;
    char *end = string+length-1;

    while(true) 
    {

        while((convert_to_int(*start) % number) != 0) {
            start++;
        }

        while((convert_to_int(*end) % number) != 0) {
            end--;
        }

        if(start >= end)
            break;
        else
        {
            // Swap numbers 
            char temp = *start;
            *start = *end;
            *end = temp;
        }
    }

    return;

}

int main() …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm pointers

0
推荐指数
1
解决办法
43
查看次数

LINQ运算符'=='不能应用于'char'和'string'类型的操作数

我过去几乎没用过LINQ.当我今天尝试使用LinqPad撰写一个小LINQ查询时,我收到以下错误:

Operator '==' cannot be applied to operands of type 'char' and 'string'

这是我试写的脚本:

void Main()
{
            var csvlines = File.ReadAllLines(@"M:\smdr(backup08-06-2015).csv");
            var csvLinesData = csvlines.Skip(1).Select(l => l.Split(',').ToArray());
            var csvData = csvLinesData.Where(l => (!l[12].Contains("VM") && l[12] != "Voice Mail")).ToArray();
            var user = (from r in csvData
                        orderby r[12]
                        select new User
                        {
                            CSRName = r[12],

                            Incomming = (from r1 in r
                                         where r1[4] == "I"
                                         select r1).Count(),
                            outgoing = (from r1 in r
                                        where r1[4] == "O"
                                        select r1).Count()



                        }).ToList();
                        user.Dump(); …
Run Code Online (Sandbox Code Playgroud)

c# linq

-8
推荐指数
1
解决办法
1337
查看次数