小编Dud*_*ord的帖子

C#如何验证C#私有定义?

我一直使用私有和公共方法.但是,我不明白他们为什么工作.创建一个小型Hello World程序:

public class CallPublicHelloWorld
{
    public void CallHelloWorld()
    {
        publicHelloWorld();
        privateHelloWorld();
    }

    private void privateHelloWorld()
    {
        Console.WriteLine("Hello World");
    }

    public void publicHelloWorld()
    {
        Console.WriteLine("Hello World");
    }
}
Run Code Online (Sandbox Code Playgroud)

IL为公共方法创建:

IL_0000:  nop
IL_0001:  ldstr      "Hello World"
IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
IL_000b:  nop
IL_000c:  ret
Run Code Online (Sandbox Code Playgroud)

IL为私有方法创建:

IL_0000:  nop
IL_0001:  ldstr      "Hello World"
IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
IL_000b:  nop
IL_000c:  ret
Run Code Online (Sandbox Code Playgroud)

它完全相同.

JIT如何区分并验证遵守私人/公共规则?

.net c# compiler-construction visual-studio

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

类型或命名空间名称Web在命名空间系统中不存在

我一直在使用.NET Core 1.0.1.我只想尝试启动并运行Hello World页面.在构建期间,我遇到了以下错误:

The type or namespace name 'Web' does not exist in the namespace 'System' (are you missing an assembly reference?)
Run Code Online (Sandbox Code Playgroud)

我尝试添加对project.json的引用:

  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.1",
      "type": "platform"
    },
    "Microsoft.AspNetCore.Mvc": "1.0.1",
    "Microsoft.AspNetCore.Routing": "1.0.1",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
    "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Microsoft.Extensions.Logging": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "System.Web": "4.0.0" //Right here
  }
Run Code Online (Sandbox Code Playgroud)

但我得到错误:The dependency System.Web >= 4.0.0 could not be resolved.我似乎无法像在C#console/dll库中那样正常添加引用.

我需要安装另一个实际包含system.web程序集的软件包吗?或者有没有办法手动添加此引用?

c# asp.net-core

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

C#动态列表到静态列表

从事件日志类的文档中,EventLogEntryCollection是事件日志条目的动态列表.它建议直接使用Count属性,而不是将其值存储在变量中.实现此行为:

private void ReadEventLog()
{
    EventLog eventLog = new EventLog("Application", "TheGreatestMachineInTheWorld");
    EventLogEntryCollection eventLogEntries = eventLog.Entries;
    for (int i = 0; i < eventLogEntries.Count; i++){
        EventLogEntry entry = eventLog.Entries[i];
        //Do Some processing on the entry
}
Run Code Online (Sandbox Code Playgroud)

对于大型事件日志(> 20000个条目)来说速度很慢.for循环而不是foreach的原因是因为我需要迭代器位置来指示这个东西与完成的接近程度.

存储count变量并迭代:

int eventLogEntryCount = eventLogEntries.Count;
for (int i = 0; i < eventLogEntryCount; i++){
        EventLogEntry entry = eventLog.Entries[i];
        //Do Some processing on the entry
}
Run Code Online (Sandbox Code Playgroud)

提供显着的性能提升.但是,如果在处理发生时写入事件日志,则可能会导致索引超出范围异常.有没有办法静态存储这个列表,所以计数不会改变?

c# event-log

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

C#int i = +1是什么意思?

我正在浏览堆栈溢出,我遇到了这个问题:

在C#中复制文件时检查重复的文件名

在这个问题中,这个小宝石存在:

int i = +1
Run Code Online (Sandbox Code Playgroud)

我以前从未见过这种语法.所以我在visual studio中打开了交互式C#窗口:

Microsoft (R) Roslyn C# Compiler version 1.3.4.60902
Loading context from 'CSharpInteractive.rsp'.
Type "#help" for more information.

> int i = +1;
> i
1
> +1 == 1
true
Run Code Online (Sandbox Code Playgroud)

这类似+=吗?这是一些新的语法吗?这个运营商是什么?它与普通变量声明有什么不同?

c#

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