小编use*_*993的帖子

我应该在私有/内部方法中抛出null参数吗?

我正在编写一个包含多个公共类和方法的库,以及库本身使用的几个私有或内部类和方法.

在公共方法中,我有一个空检查和抛出这样的:

public int DoSomething(int number)
{
    if (number == null)
    {
        throw new ArgumentNullException(nameof(number));
    }
}
Run Code Online (Sandbox Code Playgroud)

但是这让我思考,我应该在什么级别添加参数null检查方法?我是否也开始将它们添加到私有方法?我应该只为公共方法做吗?

c# language-agnostic exception-handling software-design

29
推荐指数
6
解决办法
2550
查看次数

Stylecop配置文件在哪里?

我已经通过NuGet安装了Stylecop.我想禁用一些规则,我知道这可以通过我读过的配置文件来完成.但是,我无法在任何地方找到该文件,似乎很少有文档描述创建文件的位置.

我该如何制作文件?

编辑:由于这个问题似乎在几年后仍然受到关注,我建议现在使用基于Roslyn Analyzer的StyleCop.

这有一些优点:

  1. 它实际上是维护和活跃的.
  2. 利用Roslyn,可以为您执行一些更改.
  3. 它是一个NuGet包,因此作为项目的一部分安装,这意味着您不再需要安装看似无法维护的StyleCop Visual Studio扩展(如果您甚至可以找到从一开始就下载它的正确位置!).这样,您可以在OSS中更轻松地实施代码样式/约定.
  4. 自动.ruleset为您创建文件,并且由于使用Roslyn Analyzers,您将获得IDE支持启用/禁用规则.

.net c# stylecop

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

C#从对象列表中删除对象

我有一个对象列表,我试图通过首先检查对象中的属性来删除列表中的特定对象.

最初我使用了a foreach然后意识到你在修改集合时不能使用它,所以我决定使用普通for但是我不知道如何编写能够完成我最初编写的代码.

我如何编写代码来完成我原来的工作?

谢谢

这是我的代码:

    public void DeleteChunk(int ChunkID)
    {
        //foreach (Chunk i in ChunkList)
        //{
        //    if (i.UniqueID == ChunkID)
        //    {
        //        ChunkList.Remove(i);
        //    }
        //}

        //This won't work because here i is just an integer so i.UniqueID won't exist.
        for (int i = 0; i < ChunkList.Capacity; i++)
        {
            if (i.UniqueID == ChunkID)
            {
                ChunkList.Remove(i);
            }
        }

    }
Run Code Online (Sandbox Code Playgroud)

c#

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

无法在Visual Studio 2015中添加项目引用

我以前问了一个关于Visual Studio 2013的类似问题,但现在我遇到了与Visual Studio 2015相同的问题,但它似乎工作方式不同,这使得之前的答案不适用于这个问题.这是我之前的问题:Visual Studio 2013 - 如何在解决方案中调试项目

我正在尝试添加项目引用.我有一个库,我正在一个单独的解决方案/项目和我想用来测试和调试库的控制台应用程序.

我尝试过:添加参考>项目>解决方案>浏览

但是打开文件对话框在过滤器列表中不包含.sln文件,如果我强制它通过键入*.sln显示它们,然后选择我得到的解决方案:

"请确保该文件是可访问的,并且它是一个有效的程序集或COM组件."

我究竟做错了什么?如何正确添加解决方案/项目参考?

在此输入图像描述

c# visual-studio visual-studio-2015

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

依赖注入组合根和装饰模式

我得到StackoverflowException使用依赖注入时,在我的实现装饰图案的.我认为这是因为我对DI/IoC的理解"遗漏"了一些东西.

例如,我目前有CustomerServiceCustomerServiceLoggingDecorator.这两个类都实现了ICustomerService,并且所有装饰器类都使用了一个注入ICustomerService但添加了一些简单的NLog日志记录,这样我就可以在不影响代码的情况下使用日志记录,CustomerService同时也不会违反单一责任原则.

然而,这里的问题是因为CustomerServiceLoggingDecorator实现ICustomerService,并且它还需要ICustomerService注入其中的实现才能工作,Unity将继续尝试将其解析回自身,这会导致无限循环,直到它溢出堆栈.

这些是我的服务:

public interface ICustomerService
{
    IEnumerable<Customer> GetAllCustomers();
}

public class CustomerService : ICustomerService
{
    private readonly IGenericRepository<Customer> _customerRepository;

    public CustomerService(IGenericRepository<Customer> customerRepository)
    {
        if (customerRepository == null)
        {
            throw new ArgumentNullException(nameof(customerRepository));
        }

        _customerRepository = customerRepository;
    }

    public IEnumerable<Customer> GetAllCustomers()
    {
        return _customerRepository.SelectAll();
    }
}

public class CustomerServiceLoggingDecorator : ICustomerService
{
    private readonly ICustomerService _customerService;
    private readonly ILogger _log = LogManager.GetCurrentClassLogger(); …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc dependency-injection inversion-of-control unity-container

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

如何printf()uint16_t?

我需要使用printf()来打印uint16_t.这个SO答案(如何打印uint32_t和uint16_t变量值?)说我需要使用inttypes.h.

但是,我正在使用嵌入式系统,并且inttypes.h不可用.当uint16_t的格式说明符不可用时,如何打印uint16_t?

c format-specifiers uint16

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

在Raspbery Pi上运行带有Mono的Yeppp库

我有一个使用Yeppp的应用程序!SIMD库.该应用程序是用C#编写的.它在Windows x86-32和x86-64上运行完美.但是,当我在带有Mono的Raspberry Pi上运行应用程序时,我得到以下异常(不确定它是ARM问题,Mono问题还是其他问题).我试过以root身份运行只是为了检查,也是同样的异常.我注意到堆栈跟踪的"UnixLibraryLoader"部分,所以我确保Yeppp DLL(Yeppp.CLR.Bundle.dll)与可执行文件位于同一目录中.这是我的代码,编译方式或库的问题吗?

    Stacktrace:

  at <unknown> <0xffffffff>
  at (wrapper managed-to-native) Yeppp.UnixLibraryLoader.dlopen (string,int) <0xffffffff>
  at Yeppp.UnixLibraryLoader.Yeppp.INativeLibraryLoader.LoadLibrary (string) <0x0002f>
  at Yeppp.NativeLibrary..ctor (string,Yeppp.INativeLibraryLoader) <0x0006b>
  at Yeppp.Loader.LoadNativeLibrary () <0x000db>
  at Yeppp.Library.Init () <0x00027>
  at <Module>..cctor () <0x0000b>
  at (wrapper runtime-invoke) object.runtime_invoke_void (object,intptr,intptr,intptr) <0xffffffff>
  at <unknown> <0xffffffff>
  at SimdSpeedTest.Program.DisplayCpuFeatures () <0x00033>
  at SimdSpeedTest.Program.Main (string[]) <0x000c7>
  at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) <0xffffffff>

Native stacktrace:


Debug info from gdb:

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
[New Thread 0xb5b7b430 (LWP 2272)]
0xb6eabaac in …
Run Code Online (Sandbox Code Playgroud)

c# mono simd raspberry-pi yeppp

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

C#在同一个类中使用字段或属性

当引用类中的值(来自同一个类中)时,是否应该使用可以从其他类访问的字段或属性?

例如,我应该在哪个方面引用我班级中的变量,为什么?

public static class Debug
{
    private static int _NumberOfEvents = 1;

    public static int NumberOfEvents
    {
    get
    {
        return _NumberOfEvents;
    }
    set
    {
        _NumberOfEvents = value;
    }
}

public static void LogEvent(string Event)
{
    //This way?
    Console.WriteLine("Event {0}: " + Event, _NumberOfEvents);
    _NumberOfEvents++;

    //Or this way?
    Console.WriteLine("Event {0}: " + Event, NumberOfEvents);
    NumberOfEvents++;
}
Run Code Online (Sandbox Code Playgroud)

}

谢谢

c#

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

很多构造函数参数 - 有更好的方法吗?

public class HourlyForecastData
{
    public DateTime DateTime { get; private set; }
    public decimal TemperatureCelcius { get; private set; }
    public decimal DewPoint { get; private set; }
    public string Condition { get; private set; }
    public int ConditionCode { get; private set; }
    public int WindSpeed { get; private set; }
    public string WindDirection { get; private set; }
    public decimal WindDegrees { get; private set; }
    public int UltravioletIndex { get; private set; }
    public decimal Humidity { …
Run Code Online (Sandbox Code Playgroud)

c# oop design-patterns

6
推荐指数
2
解决办法
1910
查看次数

如何在这个Html.ActionLink中插入HTML字符?

我正在使用以下代码生成此代码:

<p>@Html.ActionLink("Read", "Index", "News", null, new { @class = "btn btn-default" })</p>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但我想创建一个看起来像这样的按钮(使用HTML字符&raquo;): 在此输入图像描述

但是,当我执行以下操作时:

<p>@Html.ActionLink("Read &raquo;", "Index", "News", null, new { @class = "btn btn-default" })</p>
Run Code Online (Sandbox Code Playgroud)

我明白了:

在此输入图像描述

我该如何解决?

html css c# asp.net-mvc twitter-bootstrap

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