小编use*_*505的帖子

对多个参数进行空检查并使用其名称引发异常

我想验证多个参数并抛出一个ArgumentNullException如果其中任何一个null。为了便于讨论,我们假设我有这个:

public void DoSomething(SomeClass param1, SomeClass param2, SomeClass param3);
Run Code Online (Sandbox Code Playgroud)

当然,我可以这样做:

if (param1 == null)
    throw new ArgumentNullException(nameof(param1));
if (param2 == null)
    throw new ArgumentNullException(nameof(param2));
if (param3 == null)
    throw new ArgumentNullException(nameof(param3));
Run Code Online (Sandbox Code Playgroud)

但它并不是特别漂亮,特别是如果它是在整个应用程序中反复检查的话。所以,我想我会这样做:

public static class ValidationExtensions
{
    public static void NullCheck<T>(this T subject)
    {
        if (T == null)
            throw new ArgumentNullException();
    }
}

// ...

param1.NullCheck();
param2.NullCheck();
param3.NullCheck();
Run Code Online (Sandbox Code Playgroud)

但这样我就失去了nameof。我做不到nameof(subject),因为那毫无意义。

当然,这是一个选择:

public static class ValidationExtensions
{
    public static void NullCheck<T>(this T subject, string …
Run Code Online (Sandbox Code Playgroud)

c# validation nameof

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

C# 8 - 多重继承“抽象类”?

在我看来,C# 8.0 特性,默认接口成员实现,本质上允许在接口级别创建实现。结合一个类可以实现多个接口的事实,它似乎非常接近类的多重继承结构。据我了解,这似乎与语言设计的核心背道而驰。

这种差异来自哪里,这为实际的抽象类留下了什么空间?

这个问题已被建议作为我的答案,虽然它很有用,但并不能完全回答我的问题。更准确地说:

  • 我一直认为单继承是 C# 设计的核心原则之一,这就是为什么实现这个特性的决定让我感到惊讶,我很想知道它来自哪里(特别是 C#)。
  • 链接的问题没有回答它为抽象类留下了什么空间。

c# abstract-class interface c#-8.0

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

比较两个列表并生成具有匹配结果的新列表C#

嗨,大家好,我是一名初学计算机工程师,我有一点问题.

我正在尝试比较两个不同大小的列表(列表A和列表B)并生成一个新的列表(列表C),其大小与列表A相同,包含C#中两个列表的匹配结果.在这里 - 让我以一个例子来解释.

例如,有这两个列表:

list A: "1", "2", "3", "4", "5", "6"
list B: "1", "4", "5"
Run Code Online (Sandbox Code Playgroud)

我想要这个结果:

list C: "1", "null", "null", "4", "5", "null"
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经尝试过这段代码:

List<string> C = new List<string>();

// nA is the length of list A & nB is the length of list B 
for (int x = 0; x < nA; x++)
{
     for (int y = 0; y < nB; y++)
     {
         if (listA[x] == listB[y])
         {
            listC.Add(lista[x]);
         }
         else
            listC.Add(null);
     }
} …
Run Code Online (Sandbox Code Playgroud)

c# list

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

找不到函数名

我正在尝试做我的第一个 TypeScript/React 项目,但遇到了问题。

使用这个答案,我设法从我的麦克风读取和播放声音,并在控制台中显示一些样本分析数据。现在我正在尝试将其翻译成 TS。一步一步来,我已经到了这个:

export class Processor {
    readonly BUFFER_SIZE = 16384;

    audioContext: AudioContext;
    gainNode: GainNode;
    microphoneStream: MediaElementAudioSourceNode;

    constructor() {
        this.audioContext = new AudioContext();

        console.log('audio is starting up ...');

        if (navigator.getUserMedia) {
            navigator.getUserMedia(
                { audio: true },
                function (stream) {
                    startMicrophone(stream);
                },
                function (e) {
                    alert('Error capturing audio.');
                });
        } else {
            alert('Seems like this browser might not be supported.');
        }
    }

    private startMicrophone(stream: MediaStream) {
        this.gainNode = this.audioContext.createGain();
        this.gainNode.connect(this.audioContext.destination);

        this.microphoneStream = 
this.audioContext.createMediaStreamSource(stream);
    }
}
Run Code Online (Sandbox Code Playgroud)

除了调用 startMicrophone …

typescript

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

标签 统计

c# ×3

abstract-class ×1

c#-8.0 ×1

interface ×1

list ×1

nameof ×1

typescript ×1

validation ×1