是
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)
会是一场灾难.
我试图使扩展方法更通用以避免冗余(这是一些实际代码的示例,下面的代码只是为了演示问题 - 我有想法使该方法也可用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) 如果我想展示一些东西,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) 我目前正在为应用程序编写一个带有日志记录的通用错误处理程序,它应该从发送者对象中提取有用的信息。
在问我的问题之前,让我先给你一些背景知识:
我为此目的使用的Global.asax 中的Application_Error处理程序定义如下:
protected void Application_Error(Object sender, EventArgs e)
Run Code Online (Sandbox Code Playgroud)
当我在这个方法中设置一个断点时,我通过本地窗口从发送者那里得到了很多有用的信息:

在 type 列中,Visual Studio 建议对象为 type ASP.global_asax,但这似乎是一种人工类型,因为当我尝试将其转换为
var senderInfo = (ASP.global_asax)sender;
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
CS0246:找不到类型或命名空间“ASP”(您是否缺少 using 指令或程序集引用?)
sender转换为合适的类类型,其中包含本地窗口显示的所有信息?(请注意,我不需要调试器显示的静态和非公共成员)异常对象:同样,异常对象也可以实现吗?(您可以在excSystem.Exception 类型的屏幕截图中看到,但确切的类型是System.Web.HttpUnhandledException。这可能特别有用,exc.InnerException因为在这里我们获得了有关发生此异常的原因的真实信息。)
var exc = Server.GetLastError();
var innerExc = exc.InnerException;
Run Code Online (Sandbox Code Playgroud).NET框架的ICloneable接口通常提供了一种支持克隆类实例的方法.
但是如果我有多个第三方类,并且不想单独关注每个属性,那么如何有效地克隆这些类的对象呢?(这些类的源代码不可用).有没有办法使用泛型和扩展方法?
我需要的是一个深度克隆,它创建一个包含所有属性和(子)对象的精确副本.
示例:假设您要UserQuery在LinqPad中克隆对象:
void Main()
{
UserQuery uc=this;
var copy=uc.CreateCopy(); // clone it
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是一个CreateCopy()扩展,允许创建一个副本,而不必照顾这个类的细节,因为我没有自己的源UerQuery.
(注意,这UserQuery只是一个示例,用于显示我需要的内容,它也可以是PDF文档类,用户控件类,ADO.NET类或其他任何内容).
我正在开发一个程序,它可以反转所有可以被特定数字整除的给定数字.
例如: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) 我过去几乎没用过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)