相关疑难解决方法(0)

C#:为特定的代码块使用命名空间?

我只是有好奇心.我正在使用SSRS并调用其SOAP方法.我已经生成了存根/创建了Web引用,并且一切正常,我可以使Web服务调用正常.

问题:从WSDL,ReportService2005和ReportExecution生成的两个类有一些重叠的类定义,例如ParameterValue,DataSourceCredentials,ReportParameter.

在C#中,有没有办法说,"对于方法中的这个代码块,使用这个命名空间?"

伪/主要是构建错误代码:

use-this-namespace (ReportService2005)
{
    ParameterValue[] values = null;
    DataSourceCredentials[] credentials = null;
    ReportParameter[] parameters;
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以写出全名,ReportService2005.ParameterValue [] values = null.或者我可以在我的类/控制器声明之前在顶部对两个类进行别名.这只是我很好奇的事情.

c# namespaces

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

获取一个字符串以引用C#中的另一个

我来自C++背景.之前已经问过这个问题,但试着尽可能找不到答案.比方说我有:

string[] ArrayOfReallyVeryLongStringNames = new string[500];
ArrayOfReallyVeryLongStringNames[439] = "Hello world!";
Run Code Online (Sandbox Code Playgroud)

我可以创建一个引用上面的字符串(这些都不会编译):

string a = ref ArrayOfReallyVeryLongStringNames[439];  // no compile
string a = &ArrayOfReallyVeryLongStringNames[439];     // no compile
Run Code Online (Sandbox Code Playgroud)

我确实理解字符串在C#中是不可变的.我也明白你无法获得托管对象的地址.

我想这样做:

a = "Donkey Kong";  // Now ArrayOfReallyVeryLongStringNames[439] = "Donkey Kong";
Run Code Online (Sandbox Code Playgroud)

我已经阅读了Stack Overflow问题在C#中引用了另一个字符串, 它有一个很好的答案,但问题略有不同.我不想通过引用将此参数传递给函数.我知道如何使用"ref"关键字通过引用传递参数.

如果答案是"您不能在C#中执行此操作",是否有方便的解决方法?

编辑:一些答案表明问题不清楚.让我们以不同的方式问它.假设我需要操纵原始长命名数组中具有主要索引的所有项目.我想在Array ... [2],Array ... [3],Array ... [5]等中添加别名到列表中.然后,使用"for"循环修改列表中的项目(可能通过将刚创建的列表传递给函数).

在C#中,"using"关键字为类或命名空间创建别名.从答案来看,似乎无法为变量创建别名.

c# string

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

您从哪里获得C#编程的最佳深入信息?

您从哪里获得C#编程的最佳深入信息?我正在寻找专门用于c#的教程,示例,博客,专业论坛等.

c# code-snippets

10
推荐指数
7
解决办法
1141
查看次数

在泛型List的ForEach()中使用lambda表达式中的条件运算符?

是不是允许在ForEach中的lambda表达式中有一个条件运算符?

List<string> items = new List<string>{"Item 1", "Item 2", "Item I Care About"};

string whatICareAbout = "";

// doesn't compile :(
items.ForEach(item => item.Contains("I Care About") ? 
whatICareAbout += item + "," : whatICareAbout += "");
Run Code Online (Sandbox Code Playgroud)

编译错误 - >"只能将赋值,调用,递增,递减和新对象表达式用作语句"

尝试使用普通if也不起作用:

// :(
items.ForEach(item => if (item.Contains("I Care About")) {whatICareAbout += item + ", ";}
Run Code Online (Sandbox Code Playgroud)

只是不可能?

c# lambda conditional-operator .net-3.5

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

有没有其他方法来测试枚举位字段?

将Enums与位字段一起使用时:

   enum  ReallyBigEnum  { FirstChoice = 0x01, AnotherOption = 0x02 }
   ReallyBigEnum  flag = ReallyBigEnum.FirstChoice | ReallyBigEnum.AnotherOption;
Run Code Online (Sandbox Code Playgroud)

用于测试位的代码是:

   if( (flag & ReallyBigEnum.AnotherOption) == ReallyBigEnum.AnotherOption ) { ... }
Run Code Online (Sandbox Code Playgroud)

由于需要重复被测试的位,这看起来很冗长且容易出错.

如果有某种方式可以说:

   if( flag.IsSet( ReallyBigEnum.AnotherOption ) ) { ... }
Run Code Online (Sandbox Code Playgroud)

但是Enums不支持实例方法.所以,我尝试了一个模板功能:

   class Enums
   {
      public static bool IsSet<T>( T flag, T bit ) { return (flag & bit) == bit; }
   }
Run Code Online (Sandbox Code Playgroud)

但是测试位的代码看起来像这样:

   if( Enums.IsSet<ReallyBigEnum>( flag, ReallyBigEnum.AnotherOption ) ) { ... }
Run Code Online (Sandbox Code Playgroud)

写的很多.然后我试着缩短它:

   class Enums
   {
      public static bool IsSet( int flag, …
Run Code Online (Sandbox Code Playgroud)

c# enums bit-manipulation

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

ASP.NET MVC路由/ SEO友好URL

我正在尝试做stackoverflow之类的事情

从stackoverflow获取一个链接,例如:

C#的隐藏功能?

如果删除最后一部分(C#的隐藏功能?),它仍会返回相同的结果.

对于我在Global.asax中的路由,我尝试过做"{action}/{id}/{title}"之类的操作

在我的页面上,这是我的链接:

<%= Html.ActionLink(video.Title, "Details", "Videos", new {id = video.ID, title = video.Title.Replace(" ", "-")}, null) %>
Run Code Online (Sandbox Code Playgroud)

除了在id之后输入" ?title = blah-blah-blah " 之外,这就是我希望它在大多数情况下做的事情.

我想说" id/blah-blah-blah "

我的问题是什么?(除了是菜鸟)

c# asp.net-mvc seo url-routing

9
推荐指数
2
解决办法
5478
查看次数

C#类中的@namespace字段是什么?

我正在浏览StyleCop的源代码,我发现了一个奇怪的事情:

/// <summary>
/// The namespace that the rule is contained within.
/// </summary>
private string @namespace;

// [...]

internal Rule(string name, string @namespace, string checkId, string context, bool warning) : this(name, @namespace, checkId, context, warning, string.Empty, null, true, false)
{
    Param.Ignore(name, @namespace, checkId, context, warning);
}
Run Code Online (Sandbox Code Playgroud)

这是什么?它只是一个简单的字段,其中使用at符号表示它是一个字段,而不是一个namespace关键字?如果是这样,可以在-符号被用于任何保留字(例如@dynamic,@using等)?

c# syntax field reserved-words

8
推荐指数
2
解决办法
763
查看次数

Nullable DateTime是否正常工作?

请检查以下代码

DateTime? tmp = new DateTime();
tmp = null;
return tmp.ToString();
Run Code Online (Sandbox Code Playgroud)

它回来了String.Empty.

这是对的吗?

可能是在第二行代码中引发异常会更好

c# datetime

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

如何在C#代码中知道哪个类型变量被声明了

我希望有一些函数,如果将类的变量Base传递给它,则返回"Base",如果声明为Derived,则"Derived" ,等等.不依赖于它被分配给的值的运行时类型.

c# types declaration

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

LINQ之后的下一件大事是什么?

当它还处于测试版时,我开始使用LINQ(语言集成查询),更具体地说是Microsoft .NET LINQ Preview(2006年5月).差不多4年了,我们在很多项目中使用LINQ来完成最多样化的任务.

我甚至根据LINQ编写了我的最终大学项目.你看我喜欢它.

LINQ以及最近的PLINQ(并行LINQ)在提高编程能力和减少代码行数方面为我们的工作提供了极大的推动力,使我们能够获得更具表现力和可读性的代码.

我一直在想LINQ之后C#的下一个重大语言改进.

我知道有一些突出的语言功能作为代码合同等,但没有任何影响LINQ.

您认为下一件大事是什么?

c# linq language-features plinq

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